Ubuntu
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 的情況下工作。
我是否將配置錯誤或任何其他暗示問題可能是什麼?如果有有用的方法或工具來分析錯誤在哪裡,它也會對我有所幫助。
確保這件事
- 你的 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; }