我正在尝试使用 proxy_pass 指令让我的 NGINX 反向代理连接到另外 2 个系统,但配置出现了问题。
这是我的 nginx.conf 的服务器块:
server {
listen 80;
location /
{
proxy_set_header Host $host;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://192.168.50.8;
}
location /acp
{
proxy_set_header Host $host;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_pass http://192.168.50.9;
}
}
因此“location”部分有效,但是“location \acp”部分给了我 404 或 500(它将“acp”添加到 URL 中,而我并不希望它这样做)。
我交换了 proxy_pass IP,“location”可以使用新的 IP,而“location \acp”则不行。
我认为我想删除“acp”,但我似乎无法做到这一点。
有什么想法吗?
答案1
这proxy_pass
指示(在前缀位置内使用时)可以配置为/acp
从请求中删除前缀,通过在语句末尾添加替换 URI proxy_pass
。
在你的情况下,你应该在语句/
末尾添加一个proxy_pass
和/
在语句中添加尾随location
内容,以便替换正确进行。
例如:
location /acp/ {
...
proxy_pass http://192.168.50.9/;
}
但并非所有应用程序都能很好地运行。通常可以正确检索 HTML 文件,但检索 CSS/JS 文件时会遇到问题。