反转基因福娃 发表于 2024-9-4 12:15:56

NGINX项目实战

一、nginx四层代理

部署支持4层TCP/UDP代理的Nginx服务器
部署nginx服务器
编译安装必须要使用--with-stream参数开启4层代理模块。
# rm -rf /usr/local/nginx/ #清理情况
# ./configure --with-http_ssl_module  --with-stream #开启SSL加密功能,开启4层反向代理功能
#  make && make install #编译并安装

配置Nginx服务器,添加服务器池,实现TCP/UDP反向代理功能
# vim /usr/local/nginx/conf/nginx.conf #在这里我们的配置不再是使用http协议,以是不能在配置到http里面
stream {
        upstream backend {
                server 192.168.2.100:22; #后端SSH服务器的IP和端口
                server 192.168.2.200:22;
        }
        server {
                listen 12345; #Nginx监听的端口
                proxy_pass backend;
        }
}
http {
.. ..
启动nginx
# /usr/local/nginx/sbin/nginx
注:# /usr/local/nginx/sbin/nginx -s reload
nginx: open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
碰到这种情况,则:
# killall nginx
之后重新启动服务

客户端使用访问代理服务器测试轮询效果
# ssh 192.168.4.5 -p 12345
root@192.168.4.5's password:
# exit
# ssh 192.168.4.5 -p 12345
root@192.168.4.5's password:
#
二、nginx的优化方案


https://i-blog.csdnimg.cn/direct/4379341295df4ad89f41566c4652177a.png
修改Nginx配置文件,自定义报错页面
# vim /usr/local/nginx/conf/nginx.conf
.. ..
        error_page  404              /404.html;     #打开解释,自定义错误页面
.. ..
# vim /usr/local/nginx/html/404.html
Oops,No NO no page
# /usr/local/nginx/sbin/nginx
#systemctl stop firewalld 
# setenforce 0
优化后,使用欣赏器访问不存在的页面,会提示自己定义的404.html页面
使用背景图片做报错页面
# cp /usr/share/backgrounds/day.jpg  /usr/local/nginx/html
# vim /usr/local/nginx/conf/nginx.conf
        error_page  404              /day.jpg;
# /usr/local/nginx/sbin/nginx -s reload
如何查看服务器状态信息(非常紧张的功能)
编译安装时使用--with-http_stub_status_module开启状态页面模块
已升级的形式进行安装
# cd
# cd 桌面
# cd nginx-1.22.1/
# ./configure --with-http_ssl_module  --with-http_stub_status_module #开启status状态页面
# make  #编译
# make install
解释掉之前做过的四层代理,要不会报错
# mv  /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old #进行备份
# cp objs/nginx /usr/local/nginx/sbin/  #objs下存放二进制程序,更新版本
# make upgrade 查抄nginx是否正常

# /usr/local/nginx/sbin/nginx -V
修改配置文件
# vim /usr/local/nginx/conf/nginx.conf #新添加
        location /status {
                stub_status on;
        }
# /usr/local/nginx/sbin/nginx -s reload
优化后,查看状态页面信息
# curl 192.168.2.100/status
Active connections: 1
server accepts handled requests
 2 2 8 #nginx的累计值,
Reading: 0 Writing: 1 Waiting: 0
Active connections:当前活动的毗连数量(实时并发毗连数)。
Accepts:已经担当客户端的毗连总数量。
Handled:已经处置惩罚客户端的毗连总数量。(一样平常与accepts一致,除非服务器限制了毗连数量)。
Requests:客户端发送的请求数量。
Reading:当前服务器正在读取客户端请求头的数量。
Writing:当前服务器正在写响应信息的数量。
Waiting:当前多少客户端在等待服务器的响应。
三、nginx的优化方案(下)

 优化并发毗连数
优化前使用ab高并发测试
# rpm -qa httpd-tools
# ab -c 100 -n 100 http://192.168.2.100/ #-c代表总人数,-n代表总访问量,必须加/
# ab -c 2000 -n 2000 http://192.168.2.100/
socket: Too many open files (24)               #提示打开文件数量过多
修改Nginx配置文件,增长并发量
cpu处置惩罚器图形模式查看,改成2个
# lscpu
# vim /usr/local/nginx/conf/nginx.conf
.. ..
worker_processes  2; #与CPU焦点数量一致
events {
    worker_connections  50000; #每个worker最大并发毗连数
}
# /usr/local/nginx/sbin/nginx -s reload
#  ab -c 2000 -n 2000 http://192.168.2.100/ #再次测试,依旧报错
优化Linux内核参数(最大文件数量)
# ulimit -a #查看所有属性值
open files                      (-n) 1024 #打开文件数量
# ulimit -n 100000 #更改打开的文件数量,修改内核限制(临时)
#  ab -c 2000 -n 2000 http://192.168.2.100/

四、平滑升级

1、原理
(1)启动后完成配置加载和端⼝绑定等动作, 分离出指定数量的⼯
作⼦进程 ,这些⼦进程会持有监听端⼝的⽂件描述符 (fd),并通过
在该描述符上添加监听事件来担当毗连。
(2)Nginx 主进程在启动完成后会进⼊等待状态,负责响应各类系
统消息,如 SIGCHLD、SIGHUPSIGUSR2 等。
(3)主进程⽀持的信号
TERM、INT:⽴刻退出
HUP:重新加载配置⽂件,使⽤新的配置启动⼯作进程,并逐步关闭旧进程
USR1:重新⽣成⽇志⽂件;
USR2:启动新的主进程,实现热升级
WINCH:逐步关闭⼯作进程及⼯作进程⽀持的信号
2、过程
(1)查看旧版nginx的编译参数;
(2)编译新版本 Nginx 源码包,安装路径需与旧版⼀致,注意: 不
要执⾏ make install;
(3)备份⼆进制可执⾏⽂件,⽤新版本的替换;
(4)确保配置⽂件⽆报错;
(5)发送USR2信号:向主进程(master) 发送USR2信号,Nginx 会
启动⼀个新版本的 master 进程和对应⼯作进程,和旧版⼀起处置惩罚请
求;
(7)发送QUIT 信号: 升级完毕,可向旧的 Nginx 主进程(master) 发
送 (QUIT、TERM、或者KILL)信号,使旧的主进程退出;
(8)验证nginx 版本号,并访问测试.
五、Nginx 的 web 缓存服务

Nginx 作为 Web 缓存服务器,它介于客户端和应⽤服务器之
间,当⽤户通过欣赏器访问⼀个 URL 时,Web 缓存服务器会去
应⽤服务器获取要展示给⽤户的内容,将内容缓存到⾃⼰的服务
器上,当下⼀次请求到来时,如果访问的是同⼀个 URL,Web
缓存服务器就会直接将之前缓存的内容返回给客户端,⽽不是向
应⽤服务器再次发送请求。
Web 缓存低落了应⽤服务器、数据库的负载,淘汰了⽹络延
迟,提⾼了⽤户访问的响应速率,增强了⽤户的体验。
 
# vim
/usr/local/nginx/conf/nginx.conf
......省略部分配置信息......
http {
 include       mime.types;
 default_typeapplication/octet-stream;
 proxy_cache_path /usr/local/proxy_temp
levels=1:2 keys_zone=cache_item:200m inactive=1d
max_size=20g;
#指定缓冲路径,指定缓存⽬录级别⼆层,指定缓存块名称和⼤
⼩,指定缓存数据存储时间,指定占⽤硬盘最⼤值20g
......省略部分配置信息......
     location / {
             proxy_cache cache item;   #指定缓
冲区
             proxy_cache_key
$schemesproxy_hostsrequest_uri;   #指定参数key值
             proxy_cache_valid 200 5d;   #返回值
200缓存5天
             proxy_cache_valid 404 30s;#返回值
404缓存30秒
             proxy_cache_valid any 1m;   #其他的
⼀分钟
proxy_pass http://192.168.33.11;
#反向代理,将请求转发给后端web服务器
     }
......省略部分配置信息......
:wq
# systemctl reload nginx.service
当反向代理缓存服务器搭建完成后,即使nginx服务关闭也可
以访问⾸⻚。 六、防盗链

作⽤:防盗链就是防⽌别⼈盗⽤服务器中的图⽚、⽂件、视频等
相关资源。在 nginx 中,通过 location + return 实现。



1、搭建 nginx 主服务器       

       
实例操作需要两台主机做防盗链操作,所以这⾥我⽤我的两台主
机(server:192.168.33.100)和(YH1:192.168.33.11)做防
盗链演示操作。
下⾯是 server:192.168.33.100 主机的搭建过程,代码及解释
如下:
# vim
/usr/local/nginx/conf/nginx.conf#去nginx配置⽂件中
找到nginx存放⾸⻚索引⽂件的根⽬录
43         location / {
44             root   html;    #nginx⾸⻚索引⽂件的
根⽬录,默认在nginx软件⽬录下,也就
是/usr/local/nginx/html
45             indexindex.html index.htm;
#nginx索引⽂件的格式
46         }
:q   #因为配置⽂件未做修改,只是找需要的⽂件位置,所以q退出
即可,⽆需w再保存
# vim
/usr/local/nginx/html/index.html   #按照如下格式写
内容,什么意思不⽤细究
 1 <html>


 2         <head>
 3                 <title>192.168.33.100</title>
 4                 </head>
 5         <body>
 6                 192.168.33.100      #我的server
主机IP
 7                 <img src="./123.jpg">
#./123.jpg表示在/usr/local/nginx/html的123.jpg图⽚⽂
件,随便导⼊⼀张图⽚改成123.jpg即可
 8         </body>
 9 </html>
:wq
# cd /usr/local/nginx/html/    #到这
个⽬录下
# ls
50x.html微信截图_20230915204153.jpgindex.html
#⼿动拖⼊⼀张jpg格式的图⽚,注意格式
# mv 微信截图_20230915204153.jpg
123.jpg  #将图⽚改名为刚才在index.html中提到的123.jpg
# systemctl reload nginx.service
#重载nginx,尽量以后少重启服务,避免到了企业中养成坏习惯       
2、测试访问主服务器
浏览器输⼊已经搭好的 nginx 主服务器,192.168.33.100
访问成功,如下图:       

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: NGINX项目实战