我有一个 Nginx,它根据主机后的 URL 路径重定向到几个不同的 Web 服务器。
我的 Nginx 主机是nginx.main.com
当前的重定向规则是
# Redirects for Math
location ~ ^/(math)($|/) {
proxy_pass http://www.aaa.com:8081;
include /etc/nginx/proxy.conf;
break; }
# Redirects for CS
location ~ ^/(cs)($|/) {
proxy_pass http://www.aaa.com:8082;
include /etc/nginx/proxy.conf;
break; }
这导致
http://nginx.main.com/math/index.html重定向至 http://www.aaa.com:8081/math/index.html
和
http://nginx.main.com/cs/index.html重定向至 http://www.aaa.com:8082/cs/index.html
(我的 2 个 aaa 站点位于 IIS 上的两个不同端口和两个不同的基本目录)
由于 IIS 限制我不希望将“/math/”和“/cs/”添加到目标网址。
例如,我想要
http://nginx.main.com/math/index.htm to be redirected to http://www.aaa.com:8081/index.html
Nginx 可以实现这个吗?
答案1
如果我理解正确的话,这应该可行
location /math/ {
proxy_pass http://www.aaa.com:8081/;
include /etc/nginx/proxy.conf;
}
location /cs/ {
proxy_pass http://www.aaa.com:8082/;
include /etc/nginx/proxy.conf;
}
我认为没有必要使用 regexp location
,因此我将其更改为 simple 。此外,break
指令在此配置中不执行任何操作。
我在后面添加了斜杠,proxy_pass
因此 nginx 用这个斜杠替换位置前缀,并将结果http://nginx.main.com/cs/index.html
代理到http://www.aaa.com:8082/index.html
。