我已经设置了一个如下所示的 proxy_pass:

我已经设置了一个如下所示的 proxy_pass:

我已经设置了一个如下所示的 proxy_pass:

location /review/app-template/16-update-to-proxy_pass/ {
        proxy_pass http://$server_name:54341/review/app-template/16-update-to-proxy_pass/;

        # proxy_set_header Host $host;
        # proxy_redirect http://$server_name:54341/review/app-template/16-update-to-proxy_pass/ /review/app-template/16-update-to-proxy_pass/;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
}

注释掉的代码是为了调试——但是注释掉对此没有明显的影响(我使用了nginx -s reload

在端口 54341 下发现 dash 应用程序运行正常:

在此处输入图片描述

但如果我通过 nginx 打开该应用程序,它就坏了:

在此处输入图片描述

什么东西坏了?

因此,java 脚本文件似乎出了问题,因此这里并列列出了这些 java 脚本文件。损坏的版本似乎返回了索引文件:

渲染索引

而工作版本实际上返回一个 Java 脚本文件:

Java 脚本源代码

如何解决这个问题?

我甚至不确定如何调试它。Curl 也一样,状态代码为 200,好像什么都没有发生。Nginx 似乎很乐意以与请求文件相同的名称提供错误的文件(索引 html)。所以没有错误日志……我完全陷入了困境。

如果还有其他有用的信息,我很乐意补充。但目前看来,这些就是需要的东西。

答案1

由于您将所有请求不经修改地传递到 dash 应用程序后端,请尝试proxy_pass不使用 URI。

例如,尝试以下操作:

location /review/app-template/16-update-to-proxy_pass/ {
        proxy_pass http://$server_name:54341;

        # proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Port $server_port;
}

很高兴看到您路过X-Forwarded-For,,X-Real-IPX-Forwarded-Proto

在很多情况下,我也建议传递X-Forwarded-Port标头,这样您的应用就知道访问者实际连接的是哪个前端端口。

问候大卫

相关内容