nginx代理服务器上的连接问题(可能是socket.io问题)
希望有人能帮助我,因为我已经为这个项目奋斗了两个多星期-这让我发疯 项目 我有一个开源的媒体播放器运行在树莓皮。我想通过HTTPS连接访问它,所以我有一个域名指向我的家庭路由器。端口转发指向运行nginx的单独服务器。我有一个非常基本的nginx配置,它似乎是真实的,它正在向我的媒体服务器发送SSL请求 错误 当我导航到媒体服务器的https地址时,我可以加载页面,并且可以看到媒体播放器的UI——但它被一个“灰色”屏幕覆盖,并且有一个永不停止的旋转轮。所以它没有完全加载 当我在Chrome中进入Google开发者控制台时,我会得到这些提示/症状 媒体服务器;在正常情况下,可通过本地网络上的HTTP访问。有一组连接如下所示:nginx代理服务器上的连接问题(可能是socket.io问题),nginx,networking,socket.io,reverse-proxy,Nginx,Networking,Socket.io,Reverse Proxy,希望有人能帮助我,因为我已经为这个项目奋斗了两个多星期-这让我发疯 项目 我有一个开源的媒体播放器运行在树莓皮。我想通过HTTPS连接访问它,所以我有一个域名指向我的家庭路由器。端口转发指向运行nginx的单独服务器。我有一个非常基本的nginx配置,它似乎是真实的,它正在向我的媒体服务器发送SSL请求 错误 当我导航到媒体服务器的https地址时,我可以加载页面,并且可以看到媒体播放器的UI——但它被一个“灰色”屏幕覆盖,并且有一个永不停止的旋转轮。所以它没有完全加载 当我在Chrome中进入
http://192.168.1.7/socket.io/?EIO=3&tran …
然而,在HTTPS连接上,我得到了很多“红色”条目。像这样:
GEThttp://127.0.0.1:3000/socket.io/?EIO=3&transport=polling&t=M_HFcoc
网络::错误连接被拒绝
所以在HTTPS上,我的请求将转到127.0.0.1;当它们应该达到192.168.1.7时。这似乎是websocket/socket.io问题
配置
error_log /var/log/nginx/error.log notice;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#access_log logs/access.log main;
access_log off;
sendfile on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip off;
proxy_buffering off;
fastcgi_keep_conn on;
#start server1 section
server {
listen 80;
listen 443 ssl;
server_name my-domain.com;
ssl_certificate /etc/letsencrypt/live/my-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my-domain.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
underscores_in_headers on;
access_log /var/log/nginx/access.log;
location / {
proxy_pass http://192.168.1.7/;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
index index.php index.html index.htm;
}
}
}
我的修复尝试
在做了一些研究之后,我添加了以下内容。在http块内部,但在位置块外部
upstream io_nodes {
ip_hash;
server 192.168.1.7;
}
然后添加了一个新的位置块
location /socket.io/ {
proxy_pass http://io_nodes/socket.io/;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
}
问题
因此,我试图修复没有任何效果。我的第一个问题是,为什么我的服务器在端口80上代理时工作,然后在尝试SSL时失败?Socket.io连接在HTTP连接上正常
虽然我对socket.io和nginx做了一些研究,但我没有明确遵循您可以找到的官方nginx说明。我错过了台阶吗?该资源描述“将如下JavaScript代码添加到交付给客户机的文件中”——我不能这样做。我无法控制媒体服务器的内容
谁能帮我往前走吗?谢谢