一个简单的实现,后续再补充。其中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";
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
设置http的负载均衡比较简单,要设置websocket的负载均衡,需要在编译nginx的时候加一个参数:
--with-stream
而且此参数仅支持1.9.0以上的nginx。