2017-09-06 5 views
0

私はリバースプロキシとしてnginxを使用しています。私はAPIとWebsocketサーバーとして1つのサーバーを持っています。 、APIリクエストのNginxの場所とすべてのWebsocketリクエストのための場所

proxy_set_header Connection keep-alive; 

しかし:WebScoketを使用するためには、私はいくつかのヘッダーを指定する必要があります。

proxy_set_header Upgrade $http_upgrade; 
proxy_set_header Connection "upgrade"; 

をしかし、その後、私はAPIリクエストのため多少の誤差があり、それを修正するためには、私が使用する必要があります上記の行はwebsocket接続を破ります。私はすべてのウェブソケットURLの別の場所を持っている持っていることを好きではない

location/{ 
     proxy_pass http://0.0.0.0:5000; 
     proxy_http_version 1.1;   
     proxy_set_header Connection keep-alive; 
     proxy_set_header Host $host;   
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 

location /someWebSocketUrl{ 
     proxy_pass http://0.0.0.0:5000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
} 

location /anotherWebSocketUrl{ 
     proxy_pass http://0.0.0.0:5000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
} 

location /oneMoreWebSocketUrl{ 
     proxy_pass http://0.0.0.0:5000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
} 

:だから、私はいくつかの場所でそれを修正することができます。それを簡素化することは可能ですか?ような何か:任意の場所については

location /websocketUrl { 
    ... 
} 

、 "/ websocketUrl *" として始まっ:

location allWebSocketUrls_or_wss:// { 
    ... 
} 

答えて

0

ちょうどすべての文のために使用します。または、正規表現を使用してください:

location ~ /(some|another|oneMore)?websocketUrl[1-3]*$ { 
    ... 
} 

正確なURLが必要な場合は、またはさらに簡単に:

location ~ /.*websocketUrl.*$ { 
    ... 
} 

"websocketUrl"に使用されます。私はそれがより良いすべてのソケットに特殊なディレクトリを使用するが、この方法はあまりにも/

に動作します、と思うしかし、あなたはすべて同じオプションを持っている場合は、ヘッダーを無効にしよう:

location =/{ 
     proxy_pass http://0.0.0.0:5000; 
     proxy_http_version 1.1; 
     proxy_set_header Connection keep-alive; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection "upgrade"; 
} 

location/{ 
     proxy_pass http://0.0.0.0:5000; 
     proxy_http_version 1.1;   
     proxy_set_header Connection ""; # <--- this will disable header 
     proxy_set_header Host $host;   
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
} 
+0

名 'websocketUrl1-3'ただの例です...申し訳ありませんが、私はそれに言及しなければなりませんでした。 – user348173

+0

@ user348173、Ok、更新された投稿 – bukkojot

関連する問題