ไม่ต้องกลัวเพราะกลุ่ม Ops Programmer ผู้กล้าหาญได้แก้ไขสถานการณ์ด้วยแบรนด์ใหม่ที่ตบnginx_tcp_proxy_module
เขียนในเดือนสิงหาคม 2012 ดังนั้นหากคุณมาจากอนาคตคุณควรทำการบ้าน
ข้อกำหนดเบื้องต้น
ถือว่าคุณกำลังใช้ CentOS:
- ลบอินสแตนซ์ปัจจุบันของ NGINX (แนะนำให้ใช้เซิร์ฟเวอร์ dev สำหรับสิ่งนี้)
- ถ้าเป็นไปได้ให้บันทึกไฟล์กำหนดค่า NGINX เก่าของคุณเพื่อให้คุณสามารถใช้ซ้ำได้ (ซึ่งรวมถึง
init.d/nginx
สคริปต์ของคุณด้วย)
yum install pcre pcre-devel openssl openssl-devel
และ libs ที่จำเป็นอื่น ๆ สำหรับการสร้าง NGINX
- รับnginx_tcp_proxy_moduleจาก GitHub ที่นี่https://github.com/yaoweibin/nginx_tcp_proxy_moduleและจำโฟลเดอร์ที่คุณวางไว้ (ตรวจสอบให้แน่ใจว่าไม่ได้ซิป)
สร้าง NGINX ใหม่ของคุณ
อีกครั้งถือว่า 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
(คุณสามารถเพิ่มโมดูลเพิ่มเติมได้หากต้องการ)
make
make install
ไม่จำเป็น:
sudo /sbin/chkconfig nginx on
ตั้งค่า Nginx
อย่าลืมคัดลอกไฟล์การกำหนดค่าเก่าของคุณก่อนหากคุณต้องการใช้ซ้ำ
สำคัญ:คุณจะต้องสร้างtcp {}
คำสั่งที่ระดับสูงสุดในคอนฟิกของคุณ ตรวจสอบให้แน่ใจว่าไม่ได้อยู่ในhttp {}
คำสั่งของคุณ
ตัวอย่างการกำหนดค่าด้านล่างแสดงเซิร์ฟเวอร์เว็บซ็อกเก็ตต้นน้ำเดียวและสองพร็อกซีสำหรับทั้ง SSL และไม่ใช่ 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;
}
}