CentOS7 Nginx安装配置操作指引

目录

  1. Nginx概念 3
  2. Nginx安装 3 2.1 通过yum安装部署 3
  3. 构建Nginx仓储库 3
  4. 建立nginx.repo 文件 4
  5. 更新系统 4
  6. 执行安装 4
  7. 运行并验证 5 2.2 通过编译安装部署 6 2.2.1 依赖包安装 6 2.2.2 下载源码安装包 6 2.2.3 Configure命令参数讲解 7 2.2.4 编译安装 9 2.2.5 运行并验证 9 2.2.6 Nginx加入环境变量 10
  8. Nginx运行、重启及关闭 11 3.1 Nginx启动 11 3.2 Nginx状态检查 11 3.3 Nginx关闭 11 3.3.1 nginx进程支持的信号 12 3.3.2 快速关闭 12 3.3.3 正常关闭 13 3.3.4 强制关闭 13 3.3.5 关闭工作进程 13 3.4 Nginx重启 14
  9. Nginx配置 14
  10. 防火墙配置 20
  11. 参考文献 21

1.Nginx概念 Nginx是一台轻量级、高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。 其主要特点是:占有内存少,并发能力强。 Nginx unit:Nginx 多语言应用程序服务器; Nginx plus:web服务器、内容缓存及API网关 多合一负载均衡器; Nginx control:Nginx plus的几种监控和管理; Nginx waf:web应用程序防火墙; Nginx big:Nginx和Nginx plus的轻量级基于云的监视;

2.Nginx安装 Nginx安装有两种方式,一种是通过yum直接安装,方法二是通过源码编译安装。 通过yum安装方法简单、速度很快,而且该软件包含几乎所有正式的Nginx模块但安装的版本不是最新版本; 编译安装方式更加灵活,可以自定义安装路径以及添加特定的模块,包含第三方模块,或应用最新的安全补丁。

2.1通过yum安装部署 安装前首先检查下系统版本及环境: [root@nginx-1 ~]# cat /etc/centos-release

可以看到我们的安装部署环境为 centos 7.2版本。 1.构建Nginx仓储库 进入网址 https://nginx.org/en/linux_packages.html#RHEL-CentOS ,可以查看到针对各个系统的详细安装步骤:

默认是安装稳定版,如想要安装主线版,可输入如下命令:

开始使用yum安装:

2.建立nginx.repo 文件 在/etc/yum.repos.d/ 目录下新建文件nginx.repo [root@nginx-1 ~]# vim /etc/yum.repos.d/nginx.repo

3.更新系统 [root@nginx-1 ~]# yum update

4.执行安装 [root@nginx-1 ~]# yum install nginx

安装时提示是否接受GPG秘钥,并验证指纹是否匹配 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62,如果是,输入y表示接受。

5.运行并验证 安装好后,可以直接运行并验证是否安装成功。 查看安装后文件,安装配置文件在/etc/nginx/ 目录,执行文件路径:/usr/sbin/nginx ,日志文件在 /var/log/nginx 目录。 [root@nginx-1 nginx-1.16.1]# find / -name nginx

启动nginx服务,并检查端口: [root@nginx-1 ~]# nginx [root@nginx-1 ~]# netstat -nutpl

[root@nginx-1 ~]# curl -I 127.0.0.1

出现以上结果,表示,已安装成功,并运行。版本为1.16.1版。

2.2通过编译安装部署 2.2.1依赖包安装 源码安装之前,首先要安装好相应的依赖包: [root@nginx-1 ~]# yum -y install gcc gcc-c++ autoconf automake libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 2.2.2下载源码安装包 通过官网下载对应源码安装包文件https://nginx.org/en/download.html,

或在服务器上直接通过命令下载: [root@nginx-1 src]# wget https://nginx.org/download/nginx-1.16.1.tar.gz

下载后解压缩: [root@nginx-1 src]# tar -zxvf nginx-1.16.1.tar.gz

2.2.3Configure命令参数讲解 Configure命令详细参数可参考以下官方文档: http://nginx.org/en/docs/configure.html

2.2.4编译安装 [root@nginx-1 nginx-1.16.1]# ./configure
--prefix=/usr/local/nginx
--error-log-path=/var/log/nginx/error.log
--with-http_ssl_module

[root@nginx-1 nginx-1.16.1]#make && make install 编译安装后,通过tree命令检查安装后文件结构: [root@nginx-1 nginx]# tree /usr/local/nginx/ /usr/local/nginx/ #安装目录 ├── client_body_temp ├── conf #nginx所有配置文件目录 │   ├── fastcgi.conf #fastcgi 配置文件 │   ├── fastcgi.conf.default #fastcgi配置文件的原始备份 │   ├── fastcgi_params #fastcgi参数文件 │   ├── fastcgi_params.default #fastcgi参数文件的原始备份 │   ├── koi-utf │   ├── koi-win │   ├── mime.types #媒体类型文件 │   ├── mime.types.default #媒体类型文件原始备份 │   ├── nginx.conf #nginx主配置文件 │   ├── nginx.conf.default #nginx主配置文件原始备份 │   ├── scgi_params #scgi相关参数文件 │   ├── scgi_params.default │   ├── uwsgi_params #uwsgi相关参数文件 │   ├── uwsgi_params.default │   └── win-utf ├── fastcgi_temp #fastcgi临时数据目录 ├── html #编译安装时nginx默认站点目录 │   ├── 50x.html #错误页面代替显示文件 │   └── index.html #默认首页文件 ├── logs #nginx默认日志目录 │   ├── access.log #nginx默认访问日志文件,可以实 #时记录网址用户访问情况信息 │   ├── error.log #nginx默认错误日志文件 │   └── nginx.pid #nginx的pid文件,nginx启动后, #会把所有进程的ID号写到此文件 ├── proxy_temp #proxy临时目录 ├── sbin #nginx命令文件路径 │   └── nginx #nginx执行文件 ├── scgi_temp #scgi临时目录 └── uwsgi_temp #uwsgi临时目录

2.2.5运行并验证 通过以下命令运行 nginx并检查: [root@nginx-1 local]# /usr/local/nginx/sbin/nginx #运行nginx [root@nginx-1 local]# netstat -nutpl | grep nginx #检查端口

[root@nginx-1 local]# curl -I 127.0.0.1

可以看到nginx已安装成功并正常运行。

2.2.6Nginx加入环境变量 正常安装后无法直接通过命令执行,需要进入nginx执行文件的路径下执行,如:

因此,需要配置环境变量: 编辑 /etc/profile文件,在文件最后面加上以下行: [root@nginx-1 local]# vim /etc/profile export NGINX_HOME=/usr/local/nginx export PATH=$PATH:$NGINX_HOME/sbin

保存后立即生效: [root@nginx-1 local]# source /etc/profile 或 [root@nginx-1 local]# ./etc/profile 再执行命令可以看到:

3.Nginx运行、重启及关闭 3.1Nginx启动 执行以下命令启动nginx: 方法一:如已配置好nginx的环境变量,可以直接执行nginx命令启动 [root@nginx-1 ~]# nginx 方法二:可以通过nginx可执行文件绝对路径执行 [root@nginx-1 ~]# /usr/local/nginx/sbin/nginx 方法三:执行运行指定的配置文件,如配置文件默认,可不指定 [root@nginx-1~]#/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

3.2Nginx状态检查 检查nginx端口 [root@nginx-1 ~]# netstat -nutpl | grep nginx

检查进程,此示例中,master表示是主进程,pid号12529,;worker是工作进程。Pid号是12530 [root@nginx-1 ~]# ps -ef | grep nginx

3.3Nginx关闭 Nginx的停止有多种方法,一般通过kill命令并发送不同信号给nginx进程的方式来控制nginx的停止。 如通过指定nginx的PID文件路径关闭: -# kill -信号 “/usr/local/nginx/logs/nginx.pid” 或通过主进程的pid号进行关闭: -# kill -信号 nginx主进程号

3.3.1 nginx进程支持的信号 Nginx主进程支持的信号:

Nginx工作进程支持的信号:

3.3.2 快速关闭 使用以下命令来快速关闭nginx: [root@nginx-1 systemd]# nginx -s stop 或通过给主进程发送 TERM 或 INT信号来快速关闭。 首先通过ps命令查到nginx的主进程及工作进程的pid:

[root@nginx-1 conf]# kill -TERM 12529

3.3.3 正常关闭 可以使用以下命令正常关闭nginx, [root@nginx-1 systemd]# nginx -s quit 或给主进程发送 QUIT来实现正常关闭。 [root@nginx-1 conf]# kill -QUIT 22775

3.3.4 强制关闭 使用kill -9 命令强制关闭nginx。强制关闭主进程后,工作进程任然存在,需要通过kill命令一一关闭。 [root@nginx-1 conf]# kill -9 23606 #关闭主进程 [root@nginx-1 conf]# kill -9 23607 #关闭工作进程

3.3.5 关闭工作进程 通过WINCH信号来正常关闭工作进程,或直接使用kill -9 强制关闭。 [root@nginx-1 conf]# kill -WINCH 23949 #正常关闭工作进程 [root@nginx-1 conf]# kill -9 23950 #强制关闭工作进程

3.4 Nginx重启 当配置变更后,需要重新加载。可使用以下命令重启: [root@nginx-1 sbin]# nginx -s reload 或给主进程发送 HUP信号 [root@nginx-1 sbin]# kill -HUP 25064 当nginx接受到HUP信号时,首先解析配置文件,如配置文件配置无问题,就应用新的配置文件;如配置文件有问题,将继续使用旧的配置进行工作。 Nginx应用新的配置文件后,通知旧的工作进程关闭监听套接字,但就得工作进程还会继续为当前连接提供服务,直到旧的工作进程被关闭。 因此,我们变更配置文件后,需要执行以下命令检查配置是否正确: [root@nginx-1 sbin]# nginx -t 或者 [root@nginx-1 sbin]# nginx -t -c /usr/local/nginx/conf/nginx.conf

出现以上结果表示配置无问题。

4.Nginx配置 Nginx.conf配置文件默认是安装在 prefix/conf/nginx.conf 目录下。也可以通过find命令查看。

Nginx.conf详细配置可参考《nginx.conf 配置详解》。 使用vim命令打开文件编辑: [root@nginx-1 ~]# vim /usr/local/nginx/conf/nginx.conf #user nobody; #nginx进程数,建议设置为等于CPU总核心数 worker_processes 1; #全局错误日志定义目录,默认在 /usr/local/nginx/logs/error.log,可自定义其他路径; #全局错误日志定义级别[debug | info | notice | warn | error | crit ] #例如:error_log /var/log/nginx/error.log debug #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid进程文件路径,默认 /usr/local/nginx/logs/nginx.pid,可以自定义其他路径。 #pid logs/nginx.pid; #工作模式与连接数上限 events { #参考时间模型 use [ kqueue | rtsig | epoll | select | poll ]; #epoll 模型是 Linux 2.6以上版本内核中的高性能网络I/O模型, #如果是FreeBSD系统,就使用kqueue模型 use epoll; #单个工作进程最大连接数(最大连接数=连接数*进程数) worker_connections 1024; } #设置HTTP服务器 http { include mime.types; #文件扩展名与文件类型映射表 default_type application/octet-stream; #默认文件类型 #charset utf-8; #设置字符编码 #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"';

#access_log  logs/access.log  main;

client_header_buffer_size 32k; #上传文件大小限制 large_client_header_buffers 4 64k; #设定请求缓存大小 client_max_body_size 8m; #设定请求缓存大小 ##开启高效文件传输模式, #sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on, #如果用来进行下载等应用磁盘IO重负载应用,可设置为off, #如果图片显示不正常,可把这个改为off sendfile on; #autoindex on; #开启目录列表访问权限,默认关闭 #tcp_nopush on; #防止网络阻塞 #tcp_nodelay on; #方式网络阻塞 #keepalive_timeout 120; #长连接超时时间,单位为秒 keepalive_timeout 65; #FastCGI参数配置 fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; #gzip模块设置 gzip on; #开启gzip压缩输出 gzip_min_length 1k; #最小压缩文件大小 gzip_buffers 16k; #压缩缓冲区 #gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0) gzip_comp_level 2; #压缩等级 #压缩类型,默认就已经包含text/html gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; #开启限制IP连接数的时候需要使用 #limit_zone crawler $binary_remote_addr 10m; #虚拟主机配置 server { listen 80; #监听端口 server_name localhost; #服务器域名,可以有多域名,用空格隔开 index index.html index.htm index.php #设置访问首页 #charset koi8-r; #日志格式设定 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; #定义本虚拟主机的访问日志 access_log /var/log/nginx/ha97access.log access; #php设置 location ~ ..(php|php5)?$ {    fastcgi_pass 127.0.0.1:9000;    fastcgi_index index.php;    include fastcgi.conf; } #图片缓存时间设置 location ~ ..(gif|jpg|jpeg|png|bmp|swf)$ {    expires 10d; } #JS和CSS缓存时间设置 location ~ .*.(js|css)?$ {    expires 1h; } location / { root html; index index.html index.htm; }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}
    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
#    listen       8000;
#    listen       somename:8080;
#    server_name  somename  alias  another.alias;

#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}
# HTTPS server
#
#server {
#    listen       443 ssl;
#    server_name  localhost;
#    ssl_certificate      cert.pem;
#    ssl_certificate_key  cert.key;
#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;
#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;
#    location / {
#        root   html;
#        index  index.html index.htm;
#    }
#}

}

5.防火墙配置 Nginx运行后,需要放通防火墙后才能正常访问。 [root@nginx-1 ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent [root@nginx-1 ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent [root@nginx-1 ~]# firewall-cmd --reload [root@nginx-1 ~]# firewall-cmd --zone=public --list-ports

以上已放通80及443端口,再次测试是否能长成访问:

6.参考文献 https://docs.nginx.com/nginx/admin-guide/ https://nginx.org/en/docs/ 实战Nginx:取代Apache的高性能Web服务器 张宴著

Zabbix5.0企业级分布式监控系统:精讲与企业应用