一个简单的实现,后续再补充。其中80端口是提供正常web访问的端口,9000是提供socket服务的端口。实际部署时出于安全考虑,可以将代理端口与后端服务器提供的端口设置为不同的值。
基于此配置也可以方便地配置负载均衡。
upstream test.com { server 192.168.56.108:80; server 192.168.56.109:80; keepalive 2000; } upstream socket.test.com { hash $remote_addr consistent; server 192.168.56.108:9000; server 192.168.56.109:9000; } server { listen 80; server_name test.com; location / { proxy_pass http://test.com/; proxy_set_header Host $host:$server_port; } } server { listen 9000; server_name test.com:9000; location / { proxy_pass http://socket.test.com/; proxy_set_header Host $host:$server_port; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
设置http的负载均衡比较简单,要设置websocket的负载均衡,需要在编译nginx的时候加一个参数:
--with-stream
- 1
而且此参数仅支持1.9.0以上的nginx。