【问题标题】:Unable to Connect To NodeJS server Running on EC2 from NGINX on another EC2无法从另一个 EC2 上的 NGINX 连接到在 EC2 上运行的 NodeJS 服务器
【发布时间】:2017-01-22 04:26:15
【问题描述】:
  1. 我们正在 Amazon EC2 实例 1 上的端口 8090 上运行 nodejs HTTP 服务器
  2. 我们在 Amazon EC2 实例 2 的端口 80 上运行 NGINX
  3. 在 NGINX 中,我们为 NodeJS 服务器配置了上游
  4. 现在我们无法使用运行 NGINX 的 EC2 机器的 IP 从我的机器获取 socket.io/socket.io.js。

是的,我已经为端口 8090 配置了入站/出站策略

NGINX IP :- 51.122.71.253(示例 IP)

EC2 实例 1 IP:- 5x.18x.8x.24x

问题:

我无法通过 NGINX 从本地计算机获取 http://51.122.71.253/socket.io/socket.io.js

但我可以直接从 EC2 实例 1 访问文件http://5x.18x.8x.24x:8090/socket.io/socket.io.js

具有相同 NGINX.conf 的相同设置在我们的本地 LAN 中运行。 80端口的EC2有什么特别的技巧吗?

配置文件

http 
{
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;

    map $http_upgrade $connection_upgrade
    {
        default upgrade;
            '' close;
    }

        upstream node_server
        {
                ip_hash;   
                server 5x.18x.8x.24x:8090;
        }

     server
        {
                listen 80;

                location /
                {
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header Host $http_host;
                        proxy_set_header X-NginX-Proxy true;
                        proxy_redirect off;
                        proxy_read_timeout 3000;

                        proxy_http_version 1.1;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";

                        proxy_pass http://node_server;
                        client_body_in_file_only clean;

                        client_body_buffer_size 32K;

                        client_max_body_size 400M;

                        sendfile on;
                        send_timeout 300s;
                }
        }

我们正在努力实现的目标:-

实际上在我们的客户端网络上,除了 80 之外的所有端口都被阻塞了,所以我们正在尝试 NGINX 作为代理将套接字连接从端口 80 重定向到我们的端口 8090。

(客户端机器)->(NGINX 代理)->(EC2 实例节点服务器运行@8090)

【问题讨论】:

  • 这很可能是安全组设置问题。发布您的安全组规则。
  • 我认为它没有任何安全组问题。如果我从 NGINX 机器内部 wget,我可以使用 wget 5x.18x.8x.24x:8090/socket.io/socket.io.js 获取文件。此外,除了端口 80 之外,其他任何端口的设置都可以正常工作。此外,如果端口 80 有任何问题,那么我无法从本地机器上看到 NGINX 页面

标签: nginx amazon-ec2


【解决方案1】:

我已经解决了这个问题。您必须将端口从 80 更改为 /etc/nginx/conf.d/default.conf 中的任何其他端口。

我已将端口更改为 81。

server {
    listen       81;
    server_name  localhost;

然后请重启NGINX,它会工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 2022-01-14
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 2016-05-14
    相关资源
    最近更新 更多