场景:当请求路径带有 /SnELinkIntegrate 的时候,转发到 http://10.16.16.147/pms/www/index.php/,但转发之后网页上的路径为
http://192.168.10.98/pms/login... 这里的http://192.168.10.98是发起请求的服务器地址,理论上网页上的地址应该为
http://10.16.16.147/pms/login... 才能正确的请求。
location ^~ /SnELinkIntegrate {
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.16.16.147/pms/www/index.php/;
proxy_set_header traceId $request_trace_id;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
这样就出现的 404 的问题,如何解决呢?
在增加一个请求转发的规则,当匹配到 /pms 开头的路径,转发到 10.16.16.147服务器。
location ^~ /SnELinkIntegrate {
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.16.16.147/pms/www/index.php/;
proxy_set_header traceId $request_trace_id;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}
location ^~ /pms {
proxy_set_header Host $host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://10.16.16.147/pms;
proxy_set_header traceId $request_trace_id;
proxy_connect_timeout 300s;
proxy_send_timeout 300s;
proxy_read_timeout 300s;
}