如何使 Nginx 重定向而不向重定向服务器添加尾部字符串

如何使 Nginx 重定向而不向重定向服务器添加尾部字符串

我有一个 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

相关内容