无法连接到NodeJS服务器在另一个EC2上从NGINX在EC2上运行

时间:2016-09-14 11:22:17

标签: nginx amazon-ec2

  1. 我们在Amazon EC2实例1上的端口8090上运行nodejs HTTP服务器
  2. 我们在Amazon EC2实例2的端口80上运行NGINX
  3. 在NGINX中,我们为NodeJS Server配置了上游
  4. 现在我们无法使用运行NGINX的EC2机器的IP从我的机器上获取socket.io/socket.io.js。
  5. 是的我已为端口8090配置了inbout / outbound策略

    NGINX IP : - 51.122.71.253(样本IP)

    EC2 INSTANCE 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设置在我们的本地局域网中工作。 对于端口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 PROXY) - > (EC2 INSTANCE NODEJS SERVER RUNINNG @ 8090)

1 个答案:

答案 0 :(得分:0)

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

我已将端口更改为81。

server {
    listen       81;
    server_name  localhost;

然后请重新启动NGINX,它会起作用。