如何将所有子域代理到其他域路径?
例如
SUBDOMAIN.abcxyz123.com
代理
myapp.otherdomain.com/SUBDOMAIN
确保保留请求中的所有标头/路径和查询参数。
更新
我已经尝试过,但仍然没有我需要的配置:
server {
listen 80;
server_name ~^(?<subdomain>.+)\.abcxyz123\.com$;
location / {
proxy_set_header Host "myapp.otherdomain.com";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
# this worked:
proxy_pass http://myapp.otherdomain.com/somepath/;
# this does not work:
#proxy_pass http://myapp.otherdomain.com/$subdomain$request_uri;
}
}
答案 0 :(得分:1)
试试这个
server {
server_name ~^(?<subdomain>.*)\.abcxyz123\.com$;
resolver 8.8.8.8;
rewrite ^/(.*)$ /$subdomain/$1;
location / {
proxy_set_header Host "myapp.otherdomain.com";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_pass http://myapp.otherdomain.com;
}
}
这应该使用原始查询参数(查询字符串,请求正文,请求方法等)代理所有流量,我将主机头更改为代理的“myapp.otherdomain.com”,包含'myapp.otherdomain的服务器。 com'有多个虚拟主机。如果您不想进行更改,请改用$ host。
这个答案可能需要另外编辑,因为你的问题不是很清楚。如果您还有其他问题,请在我的回答中进行评论。