Saya menggunakan nginx untuk melayani instance aplikasi PHP, dan juga menjalankan aplikasi Ratchet untuk mendengarkan koneksi websocket. Masalahnya adalah, kedua instance ini menggunakan port yang sama (80).
Bagaimana cara mengatur server sehingga saya dapat melayani keduanya?
Sunting: Baru saja kembali untuk melihat pertanyaannya telah diturunkan beberapa kali, dapat dimengerti, saya tidak benar-benar mengajukan pertanyaan dengan jelas. Saya minta maaf untuk itu. Saya melakukan uji tuntas saya. Saya akan mencoba mengklarifikasi apa yang saya tanyakan, saya mungkin telah salah paham beberapa aspek dari protokol websocket, dalam hal ini, tolong perbaiki saya:
Saya tahu betul bahwa hanya ada satu proses mendengarkan port tertentu, apa yang sebenarnya saya hadapi adalah seluruh masalah websocket, dari apa yang saya pahami, permintaan websocket dimulai dengan handshake HTTP, setelah itu akan ada mekanisme untuk 'meningkatkan' sesi itu ke port tertentu.
Dari apa yang saya baca, sepertinya mekanisme upgrade ini ditangani oleh server web. Jadi, bagaimana cara mengkonfigurasi nginx untuk menangani proses ini?
Semua dalam semua, satu hal yang saya khawatirkan menjalankan server websocket pada port selain 80, adalah kemungkinan port diblokir. Apakah kekhawatiran ini tidak berdasar? Adakah saran tentang bagaimana saya harus mengatur ini?
sumber
Jawaban:
Pertanyaan yang sangat ditulis, tetapi istilah yang saya cari adalah proxy terbalik.
Pada dasarnya, sama seperti bagaimana nginx dapat meneruskan permintaan yang berbeda ke beberapa instance aplikasi web berdasarkan path atau nama host, itu juga dapat dikonfigurasi untuk "meneruskan" permintaan ke instance server websocket. misalnya:
Permintaan HTTP untuk
http://hostname
akan dilayani halaman html biasa, sementara koneksi websocket kewss://hostname/socket
akan diteruskan ke contoh websocket pada server yang sama mendengarkan pada port 8000.sumber
proxy_read_timeout
danproxy_write_timeout
untuk mencegah terputusnya aktivitas.Server tidak dapat memiliki dua perangkat lunak berbeda yang mendengarkan pada port / alamat IP yang sama. Jika tidak, bagaimana lalu lintas akan dialihkan ke Aplikasi XYZ jika beberapa aplikasi dapat mengikat ke port yang sama?
Anda dapat mempelajari lebih lanjut tentang port dari Port (jaringan komputer)
Yang perlu Anda lakukan adalah salah satu dari opsi berikut:
Firewall Anda hanya perlu dikonfigurasi sesuai dengan apa yang Anda atur.
sumber
Anda memiliki dua opsi:
sumber