0


linux下nginx的安装及配置

Linux下的nginx的安装及使用

一、了解nginx和linux环境

1.1、Nginx

Nginx(发音为“engine-x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3代理服务器。Nginx是由伊戈尔·赛索耶夫为解决C10K问题而设计的,即同时处理大量客户端连接的问题。它特别注重高并发、高性能和低内存使用。

Nginx的主要特点包括:

  • 高并发连接处理:Nginx使用异步事件驱动的方法来处理请求,这使得它在处理大量并发连接时非常高效。
  • 反向代理与负载均衡:Nginx可以作为反向代理服务器使用,帮助在多个后端服务器之间分配客户端请求,从而提高网站的可用性和性能。
  • 静态内容和索引文件的高效服务:Nginx非常擅长提供静态内容,它可以直接从硬盘读取静态文件并快速响应客户端请求。
  • 灵活的配置语言:Nginx的配置文件结构清晰,语法简单,易于理解和修改。
  • 低资源消耗:Nginx在保持高性能的同时,还能保持非常低的内存和CPU消耗。
  • 热部署:支持无缝重启,可以在不中断客户端连接的情况下更新配置或升级软件。

Nginx广泛应用于各种网站和应用中,特别是那些需要处理大量并发请求的场景,如大型门户网站、电商平台和云服务等。它的稳定性和高效性使其成为许多知名公司和网站的首选。

1.2、linux用的centos

1.3、连接linux的工具Xshell和Xftp,个人版

二、下载nginx

2.1、手动下载安装

官网:下载链接
在这里插入图片描述
下载后,手动上传到linux的自定义目录下(可以使用XFTP,个人免费版,如需链接,直接留言)

2.2、联网直接安装(推荐)

需要直接将压缩包放进/usr/local文件中,运行下载命令时需要提前进到该目录

#下载nginx安装包
wget -c http://nginx.org/download/nginx-1.24.0.tar.gz

注意:如果没有wget命令,需要先安装:(centos版本命令:)yum install -y wget
在这里插入图片描述
在这里插入图片描述

三、开始安装

3.1、首先安装相应的依赖

我是直接在线安装,centos使用yum命令安装

#安装nginx所需要的依赖包
yum install -y gcc-c++    zlib zlib-devel    openssl openssl-devel pcre pcre-devel

安装成功!
在这里插入图片描述
另一篇很火的博客中提供了离线版(爱吃面条的猿)
在这里插入图片描述

3.2、开始安装

找到nginx安装包,在/usr/local/下
解压

#解压安装包
tar -zxvf nginx-1.24.0.tar.gz

在这里插入图片描述
进入解压后的nginx-1.24.0

cd ./nginx-1.24.0

在这里插入图片描述
执行脚本
···java
#执行配置脚本 --prefix是指定安装目录
./configure --prefix=/usr/local/nginx
···
在这里插入图片描述
然后执行两个命令,进行编译安装

make
make install

在这里插入图片描述

四、启动Nginx

首先进入到nginx路径下,刚才的安装路径

#启动脚本是在# /usr/local/nginx/sbin/nginx#启动,
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#停止
/usr/local/nginx/sbin/nginx -s stop
#重载
/usr/local/nginx/sbin/nginx -s reload
#杀掉nginx
/usr/local/nginx/sbin/nginx -s quit

访问:ip(localhost)+端口,端口默认为80,
在这里插入图片描述
安装到此结束!!!
如果访问不了,可能是防火墙的问题(ip访问的时候),可以看下边总结了

五、配置代理

5.1、配置代理需要知道的前提

了解nginx里面各个文件夹是干什么的?

  • conf:这个目录包含Nginx的配置文件。最重要的是 nginx.conf 文件,这是Nginx的主配置文件。
  • html:这个目录通常用作Nginx的默认文档根目录。也就是说,如果您没有为服务器指定其他的根目录,Nginx会从这个目录中提供静态文件。默认情况下,它包含一个简单的 index.html 页面,通常用于测试Nginx服务器是否正常运行。
  • logs:这个目录用于存放日志文件。其中最常见的有 access.log 和 error.log。access.log 记录所有的访问请求,而 error.log 记录错误信息,这对于调试和监控服务器状态非常有用。
  • sbin:这个目录包含Nginx的可执行文件,通常是 nginx 本身。这是用来启动、停止或重载Nginx配置的主要执行文件。

5.2、配置代理

查看conf配置文件

#找到nginx的配置文件,编辑
vim /usr/local/nginx/conf/nginx.conf

在这里插入图片描述
配置文件的详细解释:

#user  nobody;#运行nginx的默认账号#nginx进程数,建议设置为等于CPU总核心数。
worker_processes  1;#事件区块开始
events {#单个进程最大链接数(最大连接数=连接数*进程数)#根据硬件调整,与前面工作进程配合起来用,尽量大,但别把CPU跑到100%就行,每个进程允许的最多连接数,理论上为每台nginx服务器的最大连接数
    worker_connections  1024;}#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {#include:导入外部文件mime.types,将所有types提取为文件,然后导入到nginx配置文件中。
    include       mime.types;#默认文件类型
    default_type  application/octet-stream;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设置为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载,注意:如果图片显示不正常把这个改成off#sendfile指令指定,nginx是否调用sendfile函数(zero copy方式)来输出文件,对于普通应用,必须设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime
    sendfile        on;#长连接超时事件,单位是秒
    keepalive_timeout  65;#第一个server区块开始,表示一个独立的虚拟主机站点
    server {#提供服务的端口,默认80
        listen       80;#提供服务的域名主机名
        server_name  localhost;#对 “/” 启动反向代理,第一个location区块开始
        location / {
            root   html;#服务默认启动目录,可以改成指定的目录位置
            index  index.html index.htm;#默认的首页文件,多个用空格分开}#错误页面路由
        error_page   500502503504  /50x.html;# 出现对应的http状态码是,使用50x.html回应客户
        location = /50x.html {# location区块开始,访问50x.html
            root   html;# 指定对应的站点目录为html}}}

配置文件作用域:
在这里插入图片描述

  • 全局区域:从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令,主要包括配置运行nginx服务器的用户(组)、允许生成的worker process数,进程PID存放路径、日志存放路径和类型以及配置文件的引入等。必须上面的第一行配置
#  允许的work process数
worker_processes  1;
#  引入其他配置文件,其他配置文件可以放在conf目录下的domains文件夹下(没有自己创建一个)
include domains/helloWord.conf

这是Nginx服务器并发处理服务的关键配置,worker_processes值越大,可以支持的并发处理也越多,但是会受硬件、软件的设备的制约。

  • events区域:events块涉及的指令主要影响Nginx服务器与用户的网络连接,常用的设置包括是否开启对多worker_process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个work process可以同时支持的最大链接数等。
 worker_connections  1024;

样例中就表示每个work process支持的最大连接数为1024,这部分的配置对Nginx的性能影响较大,在实际中应该灵活配置。

  • http区域块:这块是Nginx服务器配置中最频繁的部分,代理、缓存和日志定义等绝大多数功能和第三方模块的配置都在这里。这里http块包含:http全局块、server 块在这里插入图片描述
  • http全局块:http全局块配置的指定包括文件引入、MIME-TYPE定义、日志自定义、连接超时事件、单链接请求数上限等。
  • server块:这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。每个http块可以包括多个server块,而每个server块就相当于一个虚拟主机。每个server块也分为server全局块以及可以同时包含多个location块。- 全局server块:最常见的配置就是本虚拟机主机的监听配置和本虚拟机的名称或IP配置。- location块:一个server块可以配置多个location块。这块的主要作用就是基于nginx服务器接收到的请求字符串(例如:server_name/uri-string),对虚拟主机名称(也可以是IP别名)之外的字符串(例如前面的/uri-string)进行匹配,对特定的请求进行处理。地址定向、数据缓存和应答控制等共鞥,还有许多第三方模块的配置也可以在这里进行。

六、遇到的问题

6.1、在执行安装nginx时,执行脚本时出现没有C编译不了???

#执行配置脚本 --prefix是指定安装目录
./configure --prefix=/usr/local/nginx

checking for OS

  • Linux 3.10.0-1160.el7.x86_64 x86_64 checking for C compiler … not found

  • ./configure: error: C compiler cc is not found解决办法: 由于我自己使用的时centos系统,所以运行以下命令,安装相应的工具

sudo yum groupinstall "Development Tools"

补充:其它系统怎么办?
以下是一些常见Linux发行版安装GCC(GNU Compiler Collection)的命令:

  • 对于基于Debian的系统(如Ubuntu):sudo apt updatesudo apt install build-essential这将安装GCC和其他重要的开发工具。
  • 对于基于RPM的系统(如CentOS):sudo yum groupinstall "Development Tools"这个命令会安装GCC和一组开发工具。
  • 对于Fedora:sudo dnf groupinstall "Development Tools"这也会安装GCC和其他开发工具。

安装完成后,就可以重新运行

./configure

命令,完美!!!

6.2、防火墙问题导致访问localhost:80无法访问成功

如果浏览器访问不通,请检查是否开启防火墙限制,将防火墙关闭或将端口加入到防火墙白名单中,这里nginx的默认端口为80

  • 放行端口
#查看已放行的端口
firewall-cmd --list-all
#将80端口加入到防火墙放行白名单中,并重载防火墙
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --reload
  • 关闭防火墙
 #临时关闭防火墙
systemctl stop firewalld.service
#永久关闭防火墙
systemctl disable firewalld.service
  • 设置nginx 的开机启动
vim /etc/rc.local
文本底部追加
/usr/local/nginx/sbin/nginx

【注】如有不妥,还请大佬指正!

[参考文献]
1、https://blog.csdn.net/weixin_50003028/article/details/132567183

标签: linux nginx 运维

本文转载自: https://blog.csdn.net/weixin_41724778/article/details/137926250
版权归原作者 雨后的小木屋 所有, 如有侵权,请联系我们删除。

“linux下nginx的安装及配置”的评论:

还没有评论