NGINX Proxy_Pass 到 Plesk 服务器上的 websocket 服务器

NGINX Proxy_Pass 到 Plesk 服务器上的 websocket 服务器

我正在尝试使用 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

确保这件事

  1. 您的 DNS 指向您的 NGINX IP
  2. 您的服务器块配置如下 /etc/nginx/sites-available/myurl.com
  3. 您有一个要启用到站点的软链接: ln -s /etc/nginx/sites-available/myurl.com /etc/nginx/sites-enabled
  4. 使用以下命令验证 nginx 配置 nginx -t
  5. 修改完成后重启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;
}

相关内容