nginx,Nginx可以作为一


常用命令

nginx -s stop 直接干掉服务
start nginx 启动服务
nginx -s quit 优雅停止nginx,有连接时会等连接请求完成再杀死worker进程
nginx -s reload 优雅重启,并重新载入配置文件nginx.conf
nginx -s reopen 重新打开日志文件,一般用于切割日志
nginx -v 查看版本
nginx -t 检查nginx的配置文件
nginx -h 查看帮助信息
nginx -V 详细版本信息,包括编译参数
nginx -c filename 运行时指定配置文件

配置文件

nginx配置文件结构
https://blog.csdn.net/skystep/article/details/125325826

nginx events 模块配置
https://blog.csdn.net/qq_21134059/article/details/122489819
https://cloud.tencent.com/developer/article/1387320

一 什么是Nginx

Nginx是一个高性能的Http和反向代理Web服务器。Nginx可以作为一个Http服务器进行网站的发布处理,也可以作为反向代理进行负载均衡的实现,由于其占用内存少,并发能力强,所以可以广泛应用在互联网中。

目录
一、nginx基本概念
Nginx 缓存 限流 屏蔽 优化 高可用

二、nginx编译安装、常用命令、配置文件
(1)nginx是什么?用来做什么事情?
(2)反向代理
(3)负载均衡
(4)动静分离

三、nginx 配置实例
四、nginx 高可用
五、nginx 工作原理

新版Nginx 1.16详细剖析模块体系、动态插件、功能框架、内存分配、进程模型、事件驱动、线程池、TCP/UDP/HTTP处理等Nginx核心运行机制。

二 安装 nginx-1.16.0

Nginx安装使用:下载 nginx-1.16.0.zip
官网地址 http://nginx.org/en/download.html
Nginx编译安装

#卸载旧版

完全卸载nginx的详细步骤
https://blog.csdn.net/weixin_38889300/article/details/106682750
nginx 的启动、停止与重启
https://www.cnblogs.com/waynechou/p/7760251.html

#查看nginx的版本信息
rpm -qa | grep nginx 
/usr/local/nginx/sbin/nginx -V

# 停止nginx
nginx -s stop  #强制停止nginx服务器,如果有未处理的数据,则丢弃
nginx -s quit  #优雅的停止,有连接时会等连接请求完成再杀死worker进程 
解压缩
gzip on;  #开启和关闭gzip模式
gzip_min_length 1024k;  #gizp压缩起点,文件大于1k才进行压缩
gzip_comp_level 4; #压缩级别,1-9,数字越大压缩的越好,也越占用CPU时间

#进行压缩的文件类型。
gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;

#nginx对于静态文件的处理模块,开启后会寻找以.gz结尾的文件,直接返回,不会占用cpu进行压缩,如果找不到则不进行压缩
gzip_static on;

gzip_vary on; #是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_buffers 4 16k; #设置压缩所需要的缓冲区大小,以4k为单位,如果文件为7k则申请2*4k的缓冲区 
gzip_http_version 1.1;  #设置gzip压缩针对的HTTP协议版本

四 代理&负载均衡

4.1 负载均衡的作用

1)转发功能:按照一定的算法(默认为轮询),将客户端请求转发到不同应用服务器上,以减轻单个服务器压力,提高系统并发量。
2)故障移除:通过心跳检测,判断应用服务器当前是否可以正常工作,如果服务器宕机,自动将请求发送到其他应用服务器上。
3)恢复添加:如检测到发生故障的应用服务器,则自动将恢复工作添加到处理用户请求队伍中。

4.2 正向代理和反向代理

正向代理是代理客户端的,服务器不知道具体是谁请求的。
反向代理是代理的服务器,客户端不知道具体请求哪台服务器。
反向代理是指用代理服务器来接收连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端的过程。

4.3 动静分离

动静分离的优势:充分利用服务器资源,减少不必要的请求,减少后端服务器的压力,快速提高页面加载速度。

当浏览器请求获取静态资源时,若浏览器请求的响应状态码为304,其表示从缓存中获取静态资源,而Nginx可以对静态资源进行缓存,则当下次浏览器再请求静态资源时,如资源未变更,后续请求会从浏览器缓存中读取加载。

实现方法:(略)

4.4 负载均衡策略

upstream机制提供了负载均衡的功能,可以将请求负载分担到集群服务器的某个服务器上面。它的工作流程如下:
1)分析客户端请求报文,构建发往上游服务器的请求报文;
2)调用ngx_http_upstream_init 开始与上游服务器建立TCP连接;
3)发送在第一步中组建的请求报文;
4)接收来自上游服务器的响应头并进行解析,之后往下游转发;
5)接收来自上游服务器的相应体,并进行转发。

upstream

负载均衡的配置,权重等

所有的配置文件要使用分号;结尾

模块图

其他

Nginx的端口和进程
Windows下查看、杀掉Nginx的端口和进程
netstat -ano|findstr 8001

tasklist /fi "imagename eq nginx.exe"
ps -ef|grep nginx  查看进程

taskkill /f /t /im nginx.exe
taskkill  /f /pid 8001
netstat查看进程端口

netstat -ano|findstr 8080
netstat -ano|findstr 0.0.0.0:8080

-a
-n
-o

tasklist

tasklist 得到当前进程的名字,PID,会话,内存使用情况
tasklist /fi “imagename eq nginx.exe”

taskkill杀掉进程

#根据服务名
taskkill /f /im /f nginx.exe
/im 立即
/f 强制结束进程
#根据pid
taskkill /f /pid {pid}

taskkill /f /t /im nginx.exe

刚开始乱点exe文件启动了3个Nginx导致,Nginx访问不了Tomcat,直接杀掉进程
netstat -ano|findstr 8001
tasklist /fi “imagename eq nginx.exe”
ps -ef|grep nginx

taskkill /f /pid 8001
使用taskkill taskkill /f /t /im nginx.exe

linux下批量删除进程(脚本)

tail_pid=`ps -ef | grep "www-data" | grep -v grep | awk '{print $2}'`
if [ -z "$tail_pid" ]; then
 echo "[ not find tail log pid ]"
else
 echo "find result: $tail_pid"
 kill -9 $tail_pid
fi

一个实例 Nginx请求转发Tomcat服务

访问nginx代理服务器时跳转到云服务器,即通过proxy_pass 配置请求转发地址,输入http://localhost:8001 时,请求会跳转到配置的“云”服务器

外网域名映射(花生壳)

服务是用外网域名映射到本地虚拟机的Tomcat,模拟负载均衡。
之前学习用花生壳外网IP映射本地服务,当前设置本机Windows与虚拟机Linux系统在不同网段,就假设一个在本地一个在云端。

访问服务业务

Nginx配置文件中下划线问题的坑,报错400,查找问题
对header name的字符做了限制

nginx反向代理无法获取带下划线的 HTTP Header解决办法
https://zhaoshijie.iteye.com/blog/2371440

负载均衡测试

1.部署2台服务
Linux虚拟服务:外网 2l5k085345.wicp.vip:39950,映射内网IP是192.168.236.128:8080
Windows服务:内网 localhost:8008,IP是192.168.40.1:8008

2.在upstream再添加一个本地Tomcat服务localhost:8008,不进行权重weight设置

3.访问nginx
当访问nginx的8001时,nginx会将请求交替转发给这两台服务;
配置多个目标服务器后,当一台服务器出现故障时,nginx能将请求自动转向另一台服务器。

权重weight设置后,提示配置文件错误(nginx-1.16)

相关内容