Jangan takut, karena sekelompok Programer Ops yang gagah berani telah menyelesaikan situasi dengan merek baru nginx_tcp_proxy_module
Ditulis pada Agustus 2012, jadi jika Anda berasal dari masa depan, Anda harus mengerjakan pekerjaan rumah.
Prasyarat
Asumsikan Anda menggunakan CentOS:
- Hapus instance NGINX saat ini (sarankan menggunakan server dev untuk ini)
- Jika memungkinkan, simpan file konfigurasi NGINX lama Anda sehingga Anda dapat menggunakannya kembali (termasuk
init.d/nginx
skrip Anda )
yum install pcre pcre-devel openssl openssl-devel
dan lib lainnya yang diperlukan untuk membangun NGINX
- Dapatkan nginx_tcp_proxy_module dari GitHub di sini https://github.com/yaoweibin/nginx_tcp_proxy_module dan ingat folder tempat Anda meletakkannya (pastikan tidak zip).
Bangun NGINX Baru Anda
Sekali lagi, asumsikan CentOS:
cd /usr/local/
wget 'http://nginx.org/download/nginx-1.2.1.tar.gz'
tar -xzvf nginx-1.2.1.tar.gz
cd nginx-1.2.1/
patch -p1 < /path/to/nginx_tcp_proxy_module/tcp.patch
./configure --add-module=/path/to/nginx_tcp_proxy_module --with-http_ssl_module
(Anda dapat menambahkan lebih banyak modul jika Anda membutuhkannya)
make
make install
Pilihan:
sudo /sbin/chkconfig nginx on
Setel Nginx
Ingatlah untuk menyalin file konfigurasi lama Anda terlebih dahulu jika Anda ingin menggunakannya kembali.
Penting: Anda perlu membuat tcp {}
arahan di level tertinggi di conf Anda. Pastikan itu tidak ada dalam http {}
arahan Anda .
Contoh konfigurasi di bawah ini menunjukkan server websocket hulu tunggal, dan dua proxy untuk SSL dan Non-SSL.
tcp {
upstream websockets {
## webbit websocket server in background
server 127.0.0.1:5501;
## server 127.0.0.1:5502; ## add another server if you like!
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
server_name _;
listen 7070;
timeout 43200000;
websocket_connect_timeout 43200000;
proxy_connect_timeout 43200000;
so_keepalive on;
tcp_nodelay on;
websocket_pass websockets;
websocket_buffer 1k;
}
server {
server_name _;
listen 7080;
ssl on;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.key;
timeout 43200000;
websocket_connect_timeout 43200000;
proxy_connect_timeout 43200000;
so_keepalive on;
tcp_nodelay on;
websocket_pass websockets;
websocket_buffer 1k;
}
}