一、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 后面加 等号(下图)。一旦匹配到就结束搜索(正则也是),一般匹配是会进行记录,等搜索完全部,然后就返回匹配到的最长的一个。
精准匹配
正则匹配
三、负载均衡的常用方式
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倍。
压缩前
压缩后
五、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跳转
参考资料
Nginx的rewrite(地址重定向)剖析
Nginx支持WebSocket反向代理-学习小结
nginx gzip压缩
【Nginx】实现负载均衡的几种方式
Nginx支持WebSocket配置
信号量:user1, user2------日志
超时时间
静态缓存 proxy_cache
nginx 安装新的模块儿