一、alias 、root的异同, proxy_pass解析

root与alias 英[ˈeɪliəs] (哥哥们,注意音标)
用于文件系统,主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
root的处理结果是:root路径+location路径
alias的处理结果是:使用alias路径替换location路径

alias是一个目录别名的定义,root则是最上层目录的定义。
还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无。

【proxy_pass】——反向代理配置,用于代理请求,适用于前后端负载分离或多台机器、服务器负载分离的场景,在匹配到location配置的URL路径后,转发请求到【proxy_pass】配置的URL。
是否会附加location配置路径与【proxy_pass】配置的路径后是否有"/“有关,有”/"则不附加

 
二、三种匹配方式
精准
正则
一般

精准— location 后面加 等号(下图)。一旦匹配到就结束搜索(正则也是),一般匹配是会进行记录,等搜索完全部,然后就返回匹配到的最长的一个。

精准匹配

fastapi 让nginx按照路径代理 Temporary Redirect nginx proxy_pass代理路径别名_Nginx


正则匹配

fastapi 让nginx按照路径代理 Temporary Redirect nginx proxy_pass代理路径别名_nginx_02


 

 

三、负载均衡的常用方式

1、轮询 (按请求时间来)

2、weight (根据权重来分)

3、ip_hash (只要登录过的,就一直访问登录的那个服务器)

4、fair (哪个响应时间最短就哪个)

5、url_hash (根据url定向服务器)

 
四、nginx压缩文件
gzip

server {
        listen 80;
        server_name	127.0.0.1;
        location / {
        		alias D:/finance_web/justbon-FMS/;
				autoindex on;
                gzip on;	#是否开启,off是关闭
                gzip_http_version 1.1;	  #识别http协议的版本,早起浏览器可能不支持gzip自解压,用户会看到乱码
                gzip_comp_level 3; 	#等级1-9 最小的压缩最快 但是消耗cpu
                gzip_types text/plain application/json application/x-javascript application/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-ms-bmp;
                #压缩文件类型
                }
        }

效果对比

效果很明显,压缩了4倍。

压缩前

fastapi 让nginx按照路径代理 Temporary Redirect nginx proxy_pass代理路径别名_Nginx_03


压缩后

fastapi 让nginx按照路径代理 Temporary Redirect nginx proxy_pass代理路径别名_服务器_04


 

 

 

五、nginx 支持 websocket 需要的设置

1、添加协议升级配置

http {
	      ... // 省略其它
		
	      map $http_upgrade $connection_upgrade {
                    default upgrade;
                    '' close;
	      }
	}

2、配置虚拟主机配置

server {
              listen       8000;
              server_name  127.0.0.1;
		
	      ... // 省略其它
		
	      location /ws/ {
	          proxy_pass   http://wsserver/;
	          proxy_http_version 1.1;
                  proxy_set_header Upgrade $http_upgrade;
                  proxy_set_header Connection $connection_upgrade;
                  proxy_set_header Host $host;
	      }
	}
	
	upstream wsserver {
		server 127.0.0.1:10101;
		server 127.0.0.1:10102;
	}

3、延长交互时间(解决超时中断问题)

location /ws/ {
		... // 省略其他
		proxy_connect_timeout 4s;            
		proxy_read_timeout 600s;         # 10分钟无消息交互关闭连接
		proxy_send_timeout 12s;                  
	}

六、nginx rewrite

 

指令语法:rewrite regex replacement [flag];

示例:

rewrite ^/(.*) http://www.baidu.com/ permanent; # 匹配成功后跳转到百度,执行永久301跳转

fastapi 让nginx按照路径代理 Temporary Redirect nginx proxy_pass代理路径别名_nginx_05


 

参考资料

Nginx的rewrite(地址重定向)剖析

Nginx支持WebSocket反向代理-学习小结

Nginx服务器中的Gzip配置参数详解

nginx gzip压缩

【Nginx】实现负载均衡的几种方式

Nginx支持WebSocket配置

信号量:user1, user2------日志

超时时间

静态缓存 proxy_cache

nginx 安装新的模块儿