Rumah >Operasi dan penyelenggaraan >Nginx >Bagaimana saya mengkonfigurasi nginx untuk proxying websocket?
Untuk mengkonfigurasi Nginx untuk Proxying Websocket, anda perlu memastikan bahawa Nginx dapat mengendalikan protokol WebSocket dengan betul dan permintaan peningkatannya. Berikut adalah panduan langkah demi langkah mengenai cara menetapkan ini:
/etc/nginx/nginx.conf
atau dalam /etc/nginx/sites-available/
untuk konfigurasi khusus tapak). Tambahkan Tetapan Proksi WebSocket:
Di dalam blok http
atau server
di mana anda ingin mengaktifkan sokongan WebSocket, tambahkan coretan konfigurasi berikut:
<code class="nginx">http { ... server { listen 80; server_name example.com; location / { proxy_pass http://your_backend_server; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } }</code>
proxy_http_version 1.1
memastikan bahawa Nginx menggunakan HTTP/1.1, yang diperlukan untuk sambungan WebSocket.proxy_set_header Upgrade $http_upgrade
dan proxy_set_header Connection "upgrade"
adalah penting untuk mengendalikan permintaan peningkatan WebSocket.proxy_cache_bypass $http_upgrade
memastikan bahawa sambungan websocket menghapuskan caching, yang umumnya sesuai.nginx -t
dan kemudian tambah semula atau mulakan semula nginx dengan sudo systemctl reload nginx
atau sudo systemctl restart nginx
. Untuk memastikan Nginx mengendalikan sambungan WebSocket dengan betul, tetapan berikut diperlukan dalam blok location
dalam konfigurasi Nginx anda:
proxy_pass
: Menentukan pelayan backend yang mana permintaan WebSocket akan diproksi.proxy_http_version 1.1
: Menetapkan versi protokol HTTP kepada 1.1, yang diperlukan untuk sambungan WebSocket.proxy_set_header Upgrade $http_upgrade
: Lulus nilai tajuk Upgrade
dari klien ke pelayan backend.proxy_set_header Connection "upgrade"
: Menetapkan tajuk Connection
ke "Menaik taraf," menandakan permintaan peningkatan WebSocket.proxy_set_header Host $host
: Lulus tajuk tuan rumah dari klien ke pelayan backend.proxy_cache_bypass $http_upgrade
: Memastikan sambungan WebSocket menghapuskan caching, kerana sambungan WebSocket tidak boleh di -cache.Tetapan ini berfungsi bersama untuk memastikan sambungan WebSocket dikendalikan dengan betul dan dikemukakan ke pelayan backend anda.
Untuk memastikan bahawa Nginx betul mengendalikan peningkatan protokol WebSocket, anda mesti melaksanakan konfigurasi yang diperlukan seperti yang diterangkan dalam bahagian sebelumnya. Berikut adalah petua tambahan untuk mengesahkan bahawa peningkatan ditangani dengan betul:
proxy_set_header Upgrade $http_upgrade
dan proxy_set_header Connection "upgrade"
./var/log/nginx/
. Peningkatan WebSocket yang berjaya tidak akan log ralat.wscat
atau websocat
untuk memulakan sambungan WebSocket secara manual dan sahkan bahawa mereka berjaya menyambung melalui NGINX.Dengan mengikuti langkah -langkah ini, anda dapat memastikan bahawa Nginx betul mengendalikan peningkatan protokol WebSocket.
Jika anda menghadapi masalah dengan Proxying Websocket di Nginx, ikuti langkah -langkah penyelesaian masalah ini:
http
, server
, dan blok location
yang sesuai. Gunakan nginx -t
untuk menguji konfigurasi untuk kesilapan sintaks./var/log/nginx/
) untuk sebarang kesilapan atau isu berkaitan WebSocket. Cari penyertaan yang berkaitan dengan sambungan WebSocket dan permintaan naik taraf.wscat
atau websocat
untuk menguji sambungan WebSocket terus dari baris arahan. Ini boleh membantu mengasingkan sama ada masalahnya dengan Nginx atau pelayan backend.proxy_read_timeout
nginx dan proxy_send_timeout
jika perlu.Dengan sistematik melalui langkah -langkah penyelesaian masalah ini, anda harus dapat mengenal pasti dan menyelesaikan masalah dengan Proxying Websocket di Nginx.
Atas ialah kandungan terperinci Bagaimana saya mengkonfigurasi nginx untuk proxying websocket?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!