[英]404 on POST and GET requests for Node.js app behind NGINX reverse proxy
[英]In Node.js, finding the original client URL when app is behind a reverse proxy
我正在开发一个 Node.js/Express 应用程序,该应用程序在部署时位于反向代理之后。
例如: http://myserver:3000/
是应用程序实际所在的位置,但用户通过https://proxy.mycompany.com/myapp
访问它。
我可以很容易地从通过的标头获取原始用户代理请求的主机(如果反向代理配置正确),但是如何从浏览器访问的原始 URL 中获取额外的路径和协议信息?
当我的应用程序必须生成重定向时,它需要知道最终用户的浏览器不仅希望请求通过https
转到proxy.mycompany.com
,而且还希望转到myapp
的子路径下。
到目前为止,我只能访问proxy.mycompany.com
,这不足以创建有效的重定向。
出于开发目的,我在 nginx 中使用反向代理设置,但我的公司正在使用 Microsoft 的 ISA 以及 HAProxy。
通常,这是通过由反向代理本身插入的x-forwarded-*
标头完成的。 例如:
x-forwarded-host: foo.com
x-forwarded-proto: https
看看这里:
http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/x-forwarded-headers.html
可能您可以配置 nginx 以插入您想要的任何x-
标头,但约定(标准?)似乎如上所述。
如果您反向代理到诸如/myapp
类的子路径,那肯定会使问题复杂化。 据推测,该子路径应该是 nginx 和您的应用程序都可以使用的配置选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.