Redirect Nginx:从url到子域的动态代理
我正在尝试编写一个nginx conf,根据uri动态地将url重定向到webapp。我使用proxypass指令。 例如,我想重定向到 到目前为止,我只成功地更换了新主机,但是uri被破坏了,因为我无法拆分它。(现在我甚至不能更换主机,不知道为什么…) 这是我的实际非工作配置:Redirect Nginx:从url到子域的动态代理,redirect,nginx,proxy,rewrite,Redirect,Nginx,Proxy,Rewrite,我正在尝试编写一个nginx conf,根据uri动态地将url重定向到webapp。我使用proxypass指令。 例如,我想重定向到 到目前为止,我只成功地更换了新主机,但是uri被破坏了,因为我无法拆分它。(现在我甚至不能更换主机,不知道为什么…) 这是我的实际非工作配置: server { resolver 192.168.137.71; listen 80; server_name tomservpa1; loca
server {
resolver 192.168.137.71;
listen 80;
server_name tomservpa1;
location ~ (^\/(.*)\/) {
set $ccehost $2;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://$ccehost.internaldomain.local:9780/webapp/$new_request_uri;
proxy_redirect off;
proxy_set_header Host $host;
}
}
有人已经做过这样的事了吗
谢谢。您可以在
位置
指令中使用命名捕获,以避免范围和歧义问题。例如:
location ~ ^/(?<ccehost>[^/]+)/(?<new_request_uri>.*)$ {
rewrite ^ /webapp/$new_request_uri break;
...
proxy_pass http://$ccehost.internaldomain.local:9780;
...
}
location~^/(?[^/]+)/(?.*)${
重写^/webapp/$new\u request\u uri break;
...
proxy_pass http://$ccehost.internaldomain.local:9780;
...
}
您可以在位置
指令中使用命名捕获,以避免范围和歧义问题。例如:
location ~ ^/(?<ccehost>[^/]+)/(?<new_request_uri>.*)$ {
rewrite ^ /webapp/$new_request_uri break;
...
proxy_pass http://$ccehost.internaldomain.local:9780;
...
}
location~^/(?[^/]+)/(?.*)${
重写^/webapp/$new\u request\u uri break;
...
proxy_pass http://$ccehost.internaldomain.local:9780;
...
}
这是一种方法:(在生产中设置)
位置~*^/(?*)/(*)){
上的代理截获错误;
代理路径~*^/*/;
$remote\u addr的代理\u集\u头X转发;
代理设置头主机$Host;
代理集头X转发主机$Host;
代理设置头X转发服务器$host;
代理传递http://$ccehost.app.ptf:8080/app/$2;
}
这是一种方法:(在生产中设置)
位置~*^/(?*)/(*)){
上的代理截获错误;
代理路径~*^/*/;
$remote\u addr的代理\u集\u头X转发;
代理设置头主机$Host;
代理集头X转发主机$Host;
代理设置头X转发服务器$host;
代理传递http://$ccehost.app.ptf:8080/app/$2;
}
谢谢您的回答。它应该能工作,但它不能代表我不知道为什么。它试图让它发生在我之前,我不知道我是如何解决这个问题的。谢谢你的回答。它应该能工作,但它不能代表我不知道为什么。它试图让它发生在我之前,我不知道我如何修复这个。