问题描述
我希望使用Nginx作为反向代理在AWS ubuntu服务器上更稳定地部署Sails 1应用程序。
目标:
要对我们的应用进行非版本依赖的部署。
尤其是:
我们在AWS服务器上有一个应用程序。
应用程序详细信息包括:
部署详细信息包括
问题:
我只能使逆向代理与帆,Nginx和node的上述版本一起使用。其他任何组合均导致应用服务器出现403错误。投放应用后,对服务器的邮递员GET请求直接返回“ sails.sid” cookie。但是,当通过任何其他反向代理软件组合提供应用程序服务时,GET头中不会再出现“ sails.sid” cookie。我用apache2反向代理收到了相同的no cookie GET请求。
当我直接点击应用程序(而不是通过反向代理)时,Cookie正常返回。
我尝试过的事情
该命令的节点> 10.22.0中存在一个已知的弃用
The http module OutgoingMessage.prototype._headers and OutgoingMessage.prototype._headerNames properties are deprecated.
这似乎破坏了Sails应用程序对标头的Nginx反向代理处理。
我还没有看到Nginx的修复程序,尤其是Nginx版本1.16.0会破坏标头。
我尝试过的其他事情
- 所有权和权限(chmod,chown)都可以
- apache2反向代理:与Nginx 1.16.0相同的问题:没有标题。即反向代理可以工作,但是应用程序通过apache2反向代理返回了403代码。
- 版本控制的各种排列:sail,Nginx,node
我可以尝试的事情
在sail的节点模块中,根据此旧语法,可能会有潜伏的标头代码。可以在适当的语句上用new-for-old替换它。只是一个想法。
我想要的东西:
向我展示如何使该应用程序正常工作,即以不依赖于sail,Nginx和node的这些特定版本的方式从原始Postman GET请求中获取所有标头。
如果我错过了明显的东西,那就更好了。
解决方法
我在节点11.15.0上使用了类似的设置,并且可以正常工作。
您的nginx配置是什么?
,这是我尝试在注释中添加的服务器块代码。请记住,您也必须将其符号链接到/ etc / nginx / sites-enabled文件夹。这适用于直接HTTP请求。请注意,您的应用程序只会看到客户端“ 127.0.0.1”。如果您想从客户端获取IP地址,则需要从Nginx反向代理服务器本身获取IP地址。
server {
listen 80;
server_name yourDomain.com ;
location / {
proxy_pass "http://127.0.0.1:1337";
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header Port $server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass_request_headers on;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /socket.io/ {
proxy_pass "http://127.0.0.1:1337/socket.io/";
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header Port $server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass_request_headers on;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}