2014-07-06 69 views
1

我有一個WebSocket的,它位於下的應用程序:nginx的配置作爲代理的WebSocket的

http://localhost:8888/something/ws

我想使用nginx作爲代理,但連接的轉發不起作用。這是我的配置文件:

upstream backend { 
    server 127.0.0.1:8888; 
} 

server { 
    listen 80; 

    server_name localhost; 

    location/{ 
     proxy_pass_header Server; 
     proxy_set_header Host $http_host; 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header X-Scheme $scheme; 
     proxy_pass http://backend; 
     proxy_next_upstream error; 
    } 

    location /something/ws { 

     proxy_pass http://backend; 

     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
    } 
} 

什麼是故障。我必須重寫路徑還是其他的東西?


UPDATE

的Ubuntu 12.04。附帶nginx 1.1。 nginx的升級到1.6之前,我不得不刪除nginx的常見和nginx的滿,太,否則nginx的1.1重新安裝...

+0

我相信你應該問服務器故障 – demas

+0

@demas不一定這個問題,請參閱[是否有關web服務器配置文件的問題和重寫規則的話題?](http://meta.stackoverflow.com/a/262746/ 456814)。 –

+0

我在serverfault上發現了類似的問題,但我不確定這是否是解決方案:http://serverfault.com/questions/482026/nginx-not-proxying-websockets-properly – eatdas

回答

2

你可以嘗試以下:

location /something/ws/ { 
      proxy_pass http://backend; 
      proxy_set_header X-Real-IP $remote_addr; 
      proxy_set_header Host $host; 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

      proxy_http_version 1.1; 
      proxy_set_header Upgrade $http_upgrade; 
      proxy_set_header Connection "upgrade"; 

      # Path rewriting 
      rewrite /something/ws/(.*) /$1 break; 
      proxy_redirect off; 
     } 

的關鍵是路徑重寫。