2017-10-18 2 views
2

Zum ersten Mal mit nginx.
Ich habe einen Nodejs WebSocket-Server unter ws://service_name:3600.
Ich verwende docker-compose:nginx ws ungültiges URL-Präfix

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 

Meine config:

// 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"; 
    } 
} 

ich nginx: [emerg] invalid URL prefix in /etc/nginx/conf.d/default.conf beim Start zu bekommen.
So nginx erkennt ws nicht, was mache ich?

+0

Mögliches Duplikat [Nginx ungültiger URL-Präfix] (https: // Stackoverflow .com/questions/32992908/nginx-invalid-url-prefix) –

+0

In nginx müssen Sie immer noch http für Ihre URL verwenden. 'proxy_pass http: // service_name: 3600;' –

+0

@TarunLalwani Ich habe versucht, genau das zu tun, aber es scheint nicht zu funktionieren. Ich habe vielleicht etwas falsch in meiner Konfiguration dann ... – andr

Antwort

1

In nginx müssen Sie immer noch http für Protokoll in Ihrer URL verwenden und nicht ws.

proxy_pass http://service_name:3600; 

Das ws und wss Protokoll für Browser benötigt wird, auf Server-Seite hinzufügen, die Sie unter dem WebSockets über http zu handhaben

proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "upgrade";