nginx配置备忘
- 将非根的url转发到另外服务器的根:比如访问serverA/abc/index.html,转发到serverB/index.html。参考链接:https://www.cnblogs.com/stcweb/articles/16040025.html。里面还提供了一个通过rewrite实现的方法。
location abc { proxy_pass serverB/; }
#serverB后面如果不带/,则会转发到serverB/abc/index.html
- 根据我的理解,rewrite更多的是重定向,与proxy_pass代理不一样。具体可以参考:https://blog.csdn.net/qq1356059950/article/details/125014248
- proxy_redirect:当上游服务器返回的响应是重定向或刷新(如301或302)的请求时,proxy_redirect可以重设http头部的location和refresh字段。可以参考:https://www.qyyshop.com/info/924054.html
- 转发ws(websocket)协议:在server块中加入下面的内容。具体可以参考:https://dandelioncloud.cn/article/details/1607011573635956738
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
- 在nginx中加入http基本身份鉴权:在server块中添加下面指令,密码需要通过htpasswd来生成:htpasswd -c /etc/nginx/conf.d/passwd.db usrname
auth_basic "user"; auth_basic_user_file /etc/nginx/conf.d/passwd;
#htpasswd生成的密码文件保存在/etc/nginx/conf.d/passwd - 当多个上游服务器需要反向代理的路径有重名(比如都有\static\路径)时可以通过http_referer来识别,并做跳转。具体可参看:https://blog.csdn.net/weixin_45066823/article/details/126621727
- nginx没有else,不支持if嵌套,没有多条件逻辑运算。如需要判断同时满足A条件和B条件,则执行某动作,可以使用变量方式间接使用,可以参见https://blog.csdn.net/java814483194/article/details/126552200
set $flag ""; if (A) { set $flag "${flag}1"; } if (B) { set $flag "${flag}1"; } if ($flag = "11"){ do something; }