Node.js 使用sails 1、nginx和node的反向代理非常依赖于版本,如何修复?

Node.js 使用sails 1、nginx和node的反向代理非常依赖于版本,如何修复?,node.js,nginx,apache2,sails.js,Node.js,Nginx,Apache2,Sails.js,我希望在AWS ubuntu服务器上使用nginx作为反向代理更稳定地部署sails 1应用程序 目标: 使我们的应用程序不依赖于版本 尤其是: 我们在AWS服务器上有一个应用程序 应用程序详细信息包括: 以手机为中心 已启用WebSocket 使用nginx的反向代理 应用程序与pm2保持一致 部署详细信息包括 AWS ubuntu 18.04 LTS mysql 8.x数据库 帆1.2.4 nginx 1.14.0 节点8.4.0 问题: 我只能让反向代理与上述版本的sails、ng

我希望在AWS ubuntu服务器上使用nginx作为反向代理更稳定地部署sails 1应用程序

目标:

使我们的应用程序不依赖于版本

尤其是:

我们在AWS服务器上有一个应用程序

应用程序详细信息包括:

  • 以手机为中心
  • 已启用WebSocket
  • 使用nginx的反向代理
  • 应用程序与pm2保持一致
部署详细信息包括

  • AWS ubuntu 18.04 LTS
  • mysql 8.x数据库
  • 帆1.2.4
  • nginx 1.14.0
  • 节点8.4.0
问题:

我只能让反向代理与上述版本的sails、nginx和node一起工作。任何其他组合都会导致应用服务器出现403错误。当服务应用程序时,邮递员向服务器发送的GET请求直接返回一个“sails.sid”cookie。但是,当应用程序通过任何其他反向代理软件组合提供时,GET头中不会返回“sails.sid”cookie。我使用apache2反向代理收到了相同的无cookie获取请求

当我直接点击应用程序(不是通过反向代理)时,cookies返回的结果很好

我尝试过的

  • node、sails1、nginx和apache2的不同版本
  • 节点版本>10.22.0会导致错误
命令的node>10.22.0中存在已知的弃用

这似乎打破了sails应用程序中的nginx反向代理处理标题的功能

我还没有看到nginx中的修复程序,特别是nginx版本1.16.0将破坏头文件

我尝试过的其他事情

  • 所有权和权限(chmod、chown)正常
  • apache2反向代理:与nginx 1.16.0的问题相同:没有头。也就是说,反向代理可以工作,但应用程序通过apache2反向代理返回403代码
  • 版本控制的各种排列:sails、nginx、node
我可能尝试的事情

在sails的节点模块中,根据这种旧语法,可能会隐藏头代码。这可能需要在适当的语句中用replace new for old进行修补。只是一个想法

我想要什么:

演示如何使此应用程序正常工作,即以不依赖于这些特定版本的sails、nginx和node的方式从vanilla Postman get请求中获取所有标题


如果我遗漏了一些显而易见的东西,那就更好了。

我在node 11.15.0中使用了类似的设置,它可以正常工作


您的nginx配置是什么?

这是我试图在注释中输入的服务器块代码。请记住,还必须将其符号链接到/etc/nginx/sites enabled文件夹。这适用于直接HTTP请求。请注意,您的应用程序将只看到客户端“127.0.0.1”。如果您想从您的客户机中获取IP地址,则需要从nginx反向代理服务器本身获取它们

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";

        }
}

当前正在使用服务器块配置和纯HTTP,只有一个后端服务器。如果您愿意,我可以在可用的站点上传backendServer.conf文件。这可能有助于检查它。下面是/etc/nginx/sites available文件夹中的代码。请记住,您必须将其符号链接到启用站点的文件夹。前半部分:服务器{listen 80;server\u name yourDomain.com;位置/{proxy\u pass“”;proxy_http_version 1.1;proxy_重定向关闭;proxy_set_header主机$Host;proxy_set_header端口$server_Port;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy添加_-Forwarded_;proxy_set_header X-NginX-proxy true;proxy_-pass请求_header打开;proxy_set_-header打开der Upgrade$http\U Upgrade;代理集\U头连接“升级”}后半部分:location/socket.io/{proxy\u pass“”;proxy_http_version 1.1;proxy_重定向关闭;proxy_set_header主机$Host;proxy_set_header端口$server_Port;proxy_set_header X-Real-IP$remote_addr;proxy_set_header X-Forwarded-For$proxy添加_-Forwarded_;proxy_set_header X-NginX-proxy true;proxy_-pass请求_header打开;proxy_set_-header打开der Upgrade$http\U Upgrade;proxy\U set\U header Connection“Upgrade”;}}}好的,尝试一下,对于位置/,使用:将上游定义为:``上游应用程序节点{服务器xxx.xxx.xxx.xxx:1337;keepalive 64;}````并在代理传递之后添加这些节点:``代理传递`;代理\传递\头集Cookie;代理通过头X-XSRF-TOKEN;代理读取超时240s```
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";

        }
}