Ubuntu

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

  • April 29, 2020

我正在嘗試通過 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
  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;
}

引用自:https://serverfault.com/questions/1014815