Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana untuk mengkonfigurasi webSocket proksi terbalik nginx

Bagaimana untuk mengkonfigurasi webSocket proksi terbalik nginx

王林
王林ke hadapan
2023-05-21 12:13:061230semak imbas

Oleh kerana protokol websocket dinaik taraf berdasarkan protokol http (lihat gambar di bawah), anda boleh menggunakan nginx reverse proxy websocket.

Bagaimana untuk mengkonfigurasi webSocket proksi terbalik nginx

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 nginx

location ~ .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;
}

Ini ialah fail konfigurasi php dalam nginx, saya menghapuskannya , bagaimana? Ia kelihatan sangat biasa, senarai konfigurasi ini sangat serupa dengan proksi terbalik soket web tadi. Saya mendapat tahu dengan mencari di Internet bahawa apabila nginx mengendalikan permintaan jenis PHP, ia menghantar permintaan kepada proses pengurusan fastcgi Proses pengurusan fascgi memilih hasil pemprosesan sub-proses cgi dan mengembalikannya kepada nginx, dan php-fpm ialah PHP. pengurus fastcgi. Oleh itu, apabila nginx mengendalikan permintaan jenis PHP, ia pada dasarnya dilaksanakan melalui fungsi proksi terbalik.

Kami boleh mengembangkan pemikiran kami dan menggunakan proksi terbalik nginx untuk mencapai lebih banyak fungsi, seperti proxy tomcat

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam