nginx proxy_pass 省略路径
nginx proxy_pass omitting path
我配置了nginx反向代理:
location / {
root /var/www/html;
index index.html;
}
location /login {
proxy_pass http://127.0.0.1:9080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /app {
rewrite ^/app/(.*)$ / break;
proxy_pass https://10.11.12.13/1020/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
侦听端口 9080 的服务器重定向到路由 /app/{generated subpath}。 IP 10.11.12.13 上的服务器处理 {generated subpath}
上的请求
Nginx 不使用 10.11.12.13
上游服务器上的完整路径,省略了 /1020/
端点。这种行为的原因可能是什么?
documentation 状态:
When the URI is changed inside a proxied location using the rewrite
directive, and this same configuration will be used to process a
request (break) ... In this case, the URI specified in the directive
is ignored and the full changed request URI is passed to the server.
因此,您可以使用 rewrite...break
,例如:
location /app {
rewrite ^/app/(.*)$ /1020/ break;
proxy_pass https://10.11.12.13;
...
}
或者,您可以让location
和proxy_pass
语句执行相同的转换,例如:
location /app {
proxy_pass https://10.11.12.13/1020;
...
}
请注意,在后一种情况下,为了正确转换,两个值都应以 /
结尾,或者都不以 /
.
结尾
我配置了nginx反向代理:
location / {
root /var/www/html;
index index.html;
}
location /login {
proxy_pass http://127.0.0.1:9080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /app {
rewrite ^/app/(.*)$ / break;
proxy_pass https://10.11.12.13/1020/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
侦听端口 9080 的服务器重定向到路由 /app/{generated subpath}。 IP 10.11.12.13 上的服务器处理 {generated subpath}
上的请求Nginx 不使用 10.11.12.13
上游服务器上的完整路径,省略了 /1020/
端点。这种行为的原因可能是什么?
documentation 状态:
When the URI is changed inside a proxied location using the
rewrite
directive, and this same configuration will be used to process a request (break) ... In this case, the URI specified in the directive is ignored and the full changed request URI is passed to the server.
因此,您可以使用 rewrite...break
,例如:
location /app {
rewrite ^/app/(.*)$ /1020/ break;
proxy_pass https://10.11.12.13;
...
}
或者,您可以让location
和proxy_pass
语句执行相同的转换,例如:
location /app {
proxy_pass https://10.11.12.13/1020;
...
}
请注意,在后一种情况下,为了正确转换,两个值都应以 /
结尾,或者都不以 /
.