nginx配置

1.nginx web服务配置

1.1 nginx 静态页面搭建
1.1.1 依赖包安装,源码安装

1#依赖包:gcc make openssl openssl-devel pcre pcre-devel 2yum -y install gcc make openssl openssl-devel pcre pcre-devel 3cd 源码包解压路径 4#源码编译选择对应的功能 5./configure --user=nginx --group=nginx --with-http_ssl_module 6#编译安装 7make && make install 8 9

1.1.2 添加nginx用户,移入静态页面,并开启nginx软件

1#添加nginx用户 2useradd -s /sbin/nologin nginx 3#添加测试html文件 4echo "<h1>test</h1>" > /usr/local/nginx/html/index.html 5#开启nginx服务 6/usr/local/nginx/sbin/nginx 7 8

1.1.3 测试

1curl localhost 2#会显示你的测试页面 3 4

1.2 nginx动态页面搭建(LNMP平台)
1.2.1 环境准备
在静态页面的基础上增加对应动态编程语言的所需软件
编程语言:php java python go …
这里举例php的动态页面搭建
所需的软件有:php php-fpm php-mysql mariadb mariadb-server mariadb-devel

1yum -y install php php-fpm php-mysql mariadb mariadb-server mariadb-devel 2 3

1.2.2 开启服务

1#开启php相关服务 2systemctl restart php-fpm 3systemctl restart mariadb 4systemctl enable php-fpm 5systemctl enable mariadb 6#开启nginx服务 7/usr/local/nginx/sbin/nginx 8 9

1.2.3 配置nginx动态页面转发

1#php-fpm 软件配置 2vim /etc/php-fpm.d/www.conf 3[www] 4listen = 127.0.0.1:9000 #PHP端口号 5pm.max_children = 32 #最大进程数量 6pm.start_servers = 15 #最小进程数量 7#修改Nginx配置文件并启动服务 8vim /usr/local/nginx/conf/nginx.conf 9#取消与以下内容相似部分的注释,并修改如下 10 location ~ \.php$ { 11 root html; 12 fastcgi_pass 127.0.0.1:9000; 13 fastcgi_index index.php; 14 #fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 15 include fastcgi.conf; 16 } 17 18

重启nginx,并检测

1#重启nginx 2/usr/local/nginx/sbin/nginx -s reload 3#写个.php的测试文本 4vim /usr/local/nginx/html/index.php 5<?php 6$i="test"; 7echo $i; 8?> 9#测试 10curl localhost/index.php 11 12

2.地址重写

在http{…}内加以下内容

1#可以使用正则匹配 2rewrite regex replacement flag 3rewrite 旧地址 新地址 [选项] 4#例:访问a.html跳转至b.html 5rewrite /a.html /b.html; 6#例:访问网站内任意网页跳转到http://www.jd.com/网页 7rewrite ^/ http://www.jd.com/; 8#例:访问当前网址任意网页会跳转到新域名对应的网页 9rewrite ^/(.*)$ http://www.newweb.cn/$1; 10#例:识别对应的浏览器并进行不同的跳转 11if ($http_user_agent ~* firefox) { 12rewrite ^(.*)$ /firefox/$1; 13} 14 15

地址重写格式【总结】

1rewrite 旧地址 新地址 [选项]; 2last 不再读其他rewrite 3break 不再读其他语句,结束请求 4redirect 临时重定向 5permanent 永久重定向 6 7

3.nginx反向代理

3.1 负载均衡(七层代理:应用层代理)
如上述步骤安装nginx,完成后进行如下配置

1vim /usr/local/nginx/conf/nginx.conf 2http { 3.. .. 4#使用upstream定义后端服务器集群,集群名称任意(如webserver) 5#使用server定义集群中的具体服务器和端口 6upstream webserver { 7 server 192.168.1.100:80; 8 server 192.168.1.101:80; 9 } 10.. .. 11server { 12 listen 80; 13 server_name localhost; 14 location / { 15#通过proxy_pass将用户的请求转发给webserver集群 16 proxy_pass http://webserver; 17 } 18} 19#重新加载配置 20/usr/local/nginx/sbin/nginx -s reload 21#客户端使用浏览器访问代理服务器测试轮询效果 22curl localhost #执行多次看效果 23... 24 25

设置失败次数,超时时间,权重

1upstream webserver { 2 server 192.168.2.100 weight=1 max_fails=1 fail_timeout=30; 3 server 192.168.2.200 weight=2 max_fails=2 fail_timeout=30; 4 server 192.168.2.101 down; 5 } 6#weight设置服务器权重值,默认值为1 7#max_fails设置最大失败次数,测试服务器几次才确认服务器失败 8#fail_timeout设置失败超时时间,单位为秒 9#down标记服务器已关机,不参与集群调度 10 11

设置相同客户端访问相同Web服务器

1#在upstream webserver {...}中的最上面加入如下语句 2ip-hash; 3 4

Nginx的TCP/UDP调度器(四层代理:传输层代理)

1Nginx编译安装时需要使用--with-stream,开启ngx_stream_core_module模块;--with-http_stub_status_module开启状态页面模块 2ps:重装nginx前一定要记住先关闭nginx服务 3./configure \ 4 --with-http_ssl_module \ 5 --with-http_stub_status_module \ 6 --with-stream 7 make && make install 8 /usr/local/nginx/sbin/nginx 9 10

修改/usr/local/nginx/conf/nginx.conf配置文件

1stream { 2 upstream backend { 3 server 192.168.1.100:22; #后端SSH服务器的IP和端口 4 server 192.168.1.101:22; 5} 6 server { 7 listen 12345; #Nginx监听的端口 8 proxy_pass backend; 9 } 10} 11http { 12 .. .. 13 #状态查看配置 14location /status { 15 stub_status on; 16 #allow IP地址; 17 #deny IP地址; 18 } 19.. .. 20} 21 22

重新加载配置

1 /usr/local/nginx/sbin/nginx -s reload 2 3

客户端使用访问代理服务器测试轮询效果

1ssh localhost -p 12345 2 3

查看状态页面信息

1curl localhost/status 2#结果如下 3Active connections: 1 4server accepts handled requests 5 10 10 3 6Reading: 0 Writing: 1 Waiting: 0 7#总结/解释 8Active connections:当前活动的连接数量。 9Accepts:已经接受客户端的连接总数量。 10Handled:已经处理客户端的连接总数量。 11(一般与accepts一致,除非服务器限制了连接数量)。 12Requests:客户端发送的请求数量。 13Reading:当前服务器正在读取客户端请求头的数量。 14Writing:当前服务器正在写响应信息的数量。 15Waiting:当前多少客户端在等待服务器的响应。 16 17

4.自定义404页面

常见http状态码
常见http状态码
修改配置文件

1vim /usr/local/nginx/conf/nginx.conf 2.. .. 3 charset utf-8; #仅在需要中文时修改该选项 4error_page 404 /404.html; #自定义错误页面 5.. .. 6 7

重启服务

1/usr/local/nginx/sbin/nginx -s reload 2 3

自定义404页面

1echo "404报错" > /usr/local/nginx/html/404.html 2 3

访问

1firefox localhost/不存在的页面 2 3

代码交流 2021