【发布时间】:2017-01-22 04:26:15
【问题描述】:
- 我们正在 Amazon EC2 实例 1 上的端口 8090 上运行 nodejs HTTP 服务器
- 我们在 Amazon EC2 实例 2 的端口 80 上运行 NGINX
- 在 NGINX 中,我们为 NodeJS 服务器配置了上游
- 现在我们无法使用运行 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