我已经设置了一个如下所示的 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 脚本文件:
如何解决这个问题?
我甚至不确定如何调试它。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-IP
。X-Forwarded-Proto
在很多情况下,我也建议传递X-Forwarded-Port
标头,这样您的应用就知道访问者实际连接的是哪个前端端口。
问候大卫