使用 Nginx 的反向代理

项目需要使用 nginx 的反向代理 ,现将遇到的问题记录如下。

第一种情况

// d1.test
location /proxy/ {
   proxy_pass http://d2.test/
}

通过 d1.test/proxy/ 可以访问到 d2.test ,却不能访问到 d2.test/test.php

第二种情况

// d1.test
location ~ /proxy/ {
   proxy_pass http://d2.test/
}

报错,如果 location 使用了正则表达式 ,那么 proxy_pass 就不能使用 uri 。

第三种情况

// d1.test
location ^~ /proxy/ {
   proxy_pass http://d2.test/
}

符合要求


location 语法:location [=|~|~*|^~] /uri/ { … }

^~ 如果把这个前缀用于一个常规字符串,那么告诉 nginx 如果路径匹配那么不测试正则表达式 = 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。 ~ 为区分大小写匹配 !~ 为区分大小写不匹配 ~* 为不区分大小写匹配 !~* 为不区分大小写不匹配