我正在尝试使用 SSL 连接将 websocket 客户端连接到我的服务器。我想通过 www.myurl.com/socket/(子域也是一个选项)访问它,并且 websocket 服务器在端口 7777 上运行。由于服务器正在运行 Plesk,我需要在 Plesk 界面中进行配置。
我刚刚尝试将我的配置放在这里:
Apache & nginx Settings for myurl | Additional nginx directives
我的配置如下:
location /socket/ {
proxy_pass "http://127.0.0.1:7777";
proxy_read_timeout 60;
proxy_connect_timeout 60;
proxy_redirect off;
# Allow the use of websockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
我没有建立任何连接。它在非安全连接上无需 des proxy_pass 即可工作。
我是否放置了错误的配置或任何其他提示,问题可能出在哪里?如果有有用的方法或工具来分析错误的位置,也会对我有所帮助。
答案1
确保这件事
- 您的 DNS 指向您的 NGINX IP
- 您的服务器块配置如下
/etc/nginx/sites-available/myurl.com
- 您有一个要启用到站点的软链接:
ln -s /etc/nginx/sites-available/myurl.com /etc/nginx/sites-enabled
- 使用以下命令验证 nginx 配置
nginx -t
- 修改完成后重启nginx服务
service nginx restart
您的配置中有很多选项可能并不需要。我建议简化它,看看基本功能是否有效。
server {
server_name myurl.com;
location / {
proxy_pass http://127.0.0.1:7777;
}
}
尝试访问http://myurl.com/socket 如果不起作用,请尝试在服务器配置中添加“www”或“/socket”。只有当您使用 http 使其正常工作后,才可以添加 SSL 证书参数。
server {
server_name myurl.com;
location /socket {
proxy_pass http://127.0.0.1:7777/socket;
}
location / {
proxy_pass http://127.0.0.1:7777;
}
listen [::]:443 ssl;
listen 443 ssl;
ssl_certificate /etc/ssl/ssl.crt;
ssl_certificate_key /etc/ssl/ssl.key;
}
server {
if ($host = myurl.com) {
return 301 https://$host/;
}
listen 80;
listen [::]:80;
server_name myurl.com;
return 404;
}