nginx現在支持代理websocket,但我無法找到任何有關如何執行此操作的信息,而無需單獨使用位置塊,該塊適用於使用websockets的URI。nginx反向代理websocket
我見過一些人推薦這種方法的一些變化:
location/{
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://host:port;
}
請問這是正確的方式來代理標準的HTTP以及WebSockets的?我不希望升級頭或連接設置爲「升級」,除非瀏覽器發送了這些內容,但這些proxy_set_header行是websockets工作所必需的。爲什麼nginx不轉發原始的升級/連接頭?
我對此進行了實驗,發現如果沒有兩個proxy_set_header行運行,nginx不會代理Upgrade標頭,並將Connection標頭從'upgrade'更改爲'close'。在他們看來,Connection對於非websocket請求是「升級」的,這也是不好的。
謝謝:)