Oleh kerana protokol websocket dinaik taraf berdasarkan protokol http (lihat gambar di bawah), anda boleh menggunakan nginx reverse proxy websocket.
websocket
Dari Seperti yang dapat dilihat dari gambar ini, sambungan soket web diwujudkan berdasarkan protokol http.
get /chat http/1.1 host: server.example.com upgrade: websocket connection: upgrade sec-websocket-key: x3jjhmbdl1ezlkh9gbhxdw== sec-websocket-protocol: chat, superchat sec-websocket-version: 13 origin: http://example.com
Kanak-kanak yang biasa dengan http mungkin perasan bahawa terdapat beberapa perkara lagi dalam permintaan jabat tangan ini serupa dengan protokol http.
upgrade: websocket connection: upgrade 这个就是websocket的核心了,告诉apache、nginx等服务器:我发起的是websocket协议。 sec-websocket-key: x3jjhmbdl1ezlkh9gbhxdw== sec-websocket-protocol: chat, superchat sec-websocket-version: 13
Pertama sekali, sec-websocket-key ialah nilai pengekodan base64 Ini dijana secara rawak oleh penyemak imbas: Peat, jangan menipu saya pembantu soket web.
Akhir sekali, sec-websocket-version memberitahu pelayan draf websocket (versi protokol) yang digunakan Pada mulanya, protokol websocket masih dalam peringkat draf, dan terdapat semua jenis protokol yang pelik, dan ada. were also Terdapat banyak perkara yang pelik dan berbeza Firefox dan Chrome menggunakan versi yang berbeza Pada mulanya, terdapat terlalu banyak protokol websocket, yang merupakan masalah besar. . Tetapi tidak mengapa sekarang, ia telah diselesaikan. Perkara yang semua orang gunakan
Kemudian pelayan akan mengembalikan perkara berikut, menunjukkan bahawa permintaan telah diterima dan soket web telah berjaya diwujudkan!
http/1.1 101 switching protocols upgrade: websocket connection: upgrade sec-websocket-accept: hsmrc0smlyukagmm5oppg2hagwk= sec-websocket-protocol: chat
Ini adalah kawasan terakhir yang http bertanggungjawab. Ia memberitahu pelanggan bahawa saya telah berjaya menukar protokol~
upgrade: websocket connection: upgrade
Ia masih tetap dan memberitahu pelanggan bahawa peningkatan yang akan datang adalah. protokol soket web. Pada ketika ini, http telah menyelesaikan semua kerjanya, dan langkah seterusnya adalah untuk meneruskan sepenuhnya mengikut protokol websocket.
Setelah anda memahami prinsip protokol, anda boleh meneruskan ke langkah seterusnya
Pertama sekali, nginx mengkonfigurasi sijil https
sijil pelayan dikonfigurasikan oleh bos, saya menggunakannya secara langsung. Semak sendiri jika perlu. 0.0
Tambah konfigurasi berikut dalam service
nod fail konfigurasi nginx
location /wss { proxy_pass http://127.0.0.1:8888; proxy_http_version 1.1; proxy_set_header upgrade $http_upgrade; proxy_set_header connection "upgrade"; proxy_set_header x-real-ip $remote_addr; }
Jelaskan parameter
/wss
Ini adalah rawak, memberitahu nginx URL untuk diproksikan Sekarang tetapan saya ialah wss
Apabila saya mengakses pelayan saya https://abc.com/wss
, nginx akan memetakan permintaan saya ke port 8888 mesin ini.
proxy_pass
URL yang anda ingin proksi, proksi saya ialah ke port 8888 mesin ini.
proxy_http_version
Versi http yang digunakan semasa membuat proksi.
Inilah perkara utama:
Parameter utama soket web proksi
proxy_set_header upgrade
Tetapkan upgrade
pengepala permintaan http semasa proksi kepada http asal Pengepala permintaan permintaan, pengepala permintaan protokol wss ialah websocket
proxy_set_header connection
Kerana protokol wss proksi, pengepala permintaan http connection
ditetapkan kepada upgrade
proxy_set_header x-real-ip
Tetapkan IP permintaan http asal kepada proksi, isikan $remote_addr
dan kemudian
Bagi parameter tindak balas protokol websocket, anda tidak perlu bimbang tentangnya semasa proksi terbalik.
Pada ketika ini, konfigurasi soket web proksi terbalik nginx selesai. Jika soket web berjaya disambungkan, ini bermakna soket web proksi terbalik nginx telah berjaya. wss://abc.com/wss
Ringkasan
Konfigurasi semasa hanyalah konfigurasi apabila proksi terbalik ke mesin ini Jika anda ingin menukarkan proksi kepada hos lain, ia mungkin merentas domain semasa membuat proksi Masalahnya ialah konfigurasi silang domain perlu dilakukan dalam proksi terbalik nginx.Berfikir
Anda boleh melihat perenggan ini dalam fail konfigurasi nginxlocation ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param script_filename $document_root$fastcgi_script_name; include fastcgi_params; }
location /tomcat { proxy_pass http://127.0.0.1:8080; proxy_http_version 1.1; proxy_set_header x-real-ip $remote_addr; }
Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi webSocket proksi terbalik nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!