2017-10-18 10 views
2

初めてnginxを入力してください。
ws://service_name:3600でlistenするnodejs WebSocketサーバーがあります。私はdocker-composeを使用してい
nginx ws無効なURLプレフィックス

version: "2" 
services: 
    # stuff 

    service_name: 
     image: imagename 
     ports: 
     - 3600:3600 
     links: 
     # stuff 
     - proxy 

    proxy: 
    image: image-from-nginx-with-custom-config 
    ports: 
     - 80:80 
     - 443:443 
     - 8443:8443 

マイ設定:

// stuff 

server { 
    listen   8443; 
    server_name  localhost; 
    ssl on; 

    ssl_certificate  /etc/nginx/certs/crt.pem; 
    ssl_certificate_key /etc/nginx/certs/key.pem; 

    keepalive_timeout 60; 

    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto https; 

    location/{ 
     proxy_pass ws://service_name:3600; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
    } 
} 

私は、起動時にnginx: [emerg] invalid URL prefix in /etc/nginx/conf.d/default.confを取得します。
nginxがwsを認識しないので、私は何をしますか?

+0

可能な重複[nginxの無効なURL接頭辞](HTTPSからHTTP経由のWebSocketを処理するために、次の追加します.com/questions/32992908/nginx-invalid-url-prefix) –

+0

nginxではあなたのURLにhttpを使用する必要があります。 'proxy_pass http:// service_name:3600;' –

+0

@ TarunLalwani私はちょうどそれをやろうとしましたが、うまくいかないようです。私は私の設定で何か間違っている可能性があります... – andr

答えて

1

nginxでは、wsではなく、URLにプロトコルとしてhttpを使用する必要があります。 // stackoverflowの:

proxy_pass http://service_name:3600; 

wswssプロトコルは、サーバー側で、ブラウザのために必要であるあなたは

proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "upgrade"; 
関連する問題