使用 NGINX 通过 proxy_pass 访问其他系统

使用 NGINX 通过 proxy_pass 访问其他系统

我正在尝试使用 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 文件时会遇到问题。

相关内容