Rumah >Operasi dan penyelenggaraan >Nginx >Bagaimana saya mengkonfigurasi nginx untuk proxying websocket?

Bagaimana saya mengkonfigurasi nginx untuk proxying websocket?

Emily Anne Brown
Emily Anne Brownasal
2025-03-17 17:01:02978semak imbas

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:

  1. Edit fail konfigurasi nginx:
    Buka fail konfigurasi nginx anda (biasanya terletak di /etc/nginx/nginx.conf atau dalam /etc/nginx/sites-available/ untuk konfigurasi khusus tapak).
  2. 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.
  3. Uji dan mulakan semula nginx:
    Selepas membuat perubahan ini, uji konfigurasi untuk kesilapan sintaks dengan nginx -t dan kemudian tambah semula atau mulakan semula nginx dengan sudo systemctl reload nginx atau sudo systemctl restart nginx .

Apakah tetapan nginx yang diperlukan untuk sambungan websocket?

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.

Bagaimanakah saya dapat memastikan Nginx dengan betul mengendalikan peningkatan protokol WebSocket?

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:

  1. Periksa konfigurasi:
    Sahkan bahawa anda telah memasukkan semua tetapan yang diperlukan dalam konfigurasi nginx anda, terutamanya proxy_set_header Upgrade $http_upgrade dan proxy_set_header Connection "upgrade" .
  2. Gunakan alat pemaju penyemak imbas:
    Buka aplikasi web anda dalam penyemak imbas dan gunakan alat pemaju penyemak imbas untuk memeriksa permintaan rangkaian. Cari sambungan WebSocket dan pastikan mereka menunjukkan tindak balas peningkatan yang berjaya (Kod Status 101).
  3. Pantau Log Nginx:
    Semak log akses dan ralat Nginx untuk memastikan tiada kesilapan yang berkaitan dengan WebSocket. Log boleh didapati di /var/log/nginx/ . Peningkatan WebSocket yang berjaya tidak akan log ralat.
  4. Uji dengan alat klien websocket:
    Gunakan alat baris arahan seperti wscat atau websocat untuk memulakan sambungan WebSocket secara manual dan sahkan bahawa mereka berjaya menyambung melalui NGINX.
  5. Pastikan keserasian pelayan backend:
    Pastikan pelayan backend anda (misalnya, node.js, java, dan lain -lain) dikonfigurasikan untuk mengendalikan sambungan WebSocket dan permintaan peningkatan dengan betul.

Dengan mengikuti langkah -langkah ini, anda dapat memastikan bahawa Nginx betul mengendalikan peningkatan protokol WebSocket.

Apakah langkah -langkah penyelesaian masalah yang harus saya ikuti jika proksi websocket gagal dalam nginx?

Jika anda menghadapi masalah dengan Proxying Websocket di Nginx, ikuti langkah -langkah penyelesaian masalah ini:

  1. Semak konfigurasi Nginx:
    Sahkan bahawa tetapan konfigurasi untuk Proxying WebSocket ditambah dengan betul ke http , server , dan blok location yang sesuai. Gunakan nginx -t untuk menguji konfigurasi untuk kesilapan sintaks.
  2. Periksa log nginx:
    Periksa log akses dan ralat nginx ( /var/log/nginx/ ) untuk sebarang kesilapan atau isu berkaitan WebSocket. Cari penyertaan yang berkaitan dengan sambungan WebSocket dan permintaan naik taraf.
  3. Sahkan Konfigurasi Pelayan Backend:
    Pastikan pelayan backend anda dikonfigurasi dengan betul untuk mengendalikan sambungan WebSocket dan peningkatan permintaan. Semak log pelayan backend anda untuk sebarang kesilapan yang berkaitan dengan WebSocket.
  4. Gunakan alat pemaju penyemak imbas:
    Gunakan alat pemaju penyemak imbas untuk memeriksa permintaan rangkaian dan sambungan WebSocket. Semak sebarang kesilapan semasa fasa sambungan atau semasa penghantaran data.
  5. Uji dengan alat klien websocket:
    Gunakan alat seperti wscat atau websocat untuk menguji sambungan WebSocket terus dari baris arahan. Ini boleh membantu mengasingkan sama ada masalahnya dengan Nginx atau pelayan backend.
  6. Periksa isu firewall atau proksi:
    Pastikan tiada firewall atau proksi yang menghalang sambungan websocket antara Nginx dan pelayan backend anda atau antara klien dan nginx.
  7. Pantau masa sambungan:
    Sambungan WebSocket boleh gagal jika mereka mengambil masa terlalu lama untuk ditubuhkan. Laraskan proxy_read_timeout nginx dan proxy_send_timeout jika perlu.
  8. Semak versi Protokol Websocket:
    Pastikan kedua -dua klien dan pelayan menggunakan versi Protokol Websocket yang disokong. Mismatches boleh menyebabkan kegagalan sambungan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn