用nginx做一个反向代理,发现如下坑:
1、配置文件里只能用if,不能用else,也不能嵌套使用if
2、rewrite正则只能用于做“匹配”某个字符,不能用于“不匹配”某个字符,比如匹配 不是/abc开头 的URL就不行
3、proxy_pass的server name 如果就是当前proxy_pass指令所在的server,并不会重新发起一个代理请求,而是做了类似location的操作。
4、
下面的代码,跳转结果有点儿奇怪:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | server { listen 80; server_name a.cn; location / { //访问a.cn/abc不会匹配到这里 } } server { listen 80; server_name *.a.cn; location /abc { //访问a.cn/abc会匹配到这里 } } |
5、使用ci类的框架,由于所有请求入口全是index.php,如果同一个server内部,多个location来回rewrite,最好响应结果的URI还是浏览器地址上的,相关参数都被丢失了。因为:
try_files $uri $uri/ /index.php;
上面这句话,/index.php把所有的参数都丢了
留个脚印~