从 1.3.13 开始,Nginx 内置了 Websocket 支持,所以我应该拥有它。
有人能给我提供一个最简单的配置示例吗?该配置将允许我的 nginx(在 Centos 6 上)代理接受来自我的客户端的 HTTP 连接,然后代理将代表客户端与另一台服务器上的后端建立 websocket 连接,并在客户端和 websocket 服务器之间建立代理通信?
我已经尝试了好几天,但只收到400
错误。我将非常感激。
我努力了:
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
gzip on;
server{
listen 8080;
listen 80;
location /wsDemo?ID=12 {
proxy_pass http://myserver.com:80/wsDemo?ID=12;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;
}
答案1
关键是,这location
并不匹配查询字符串(问号后面的内容)。
你将必须使用类似的东西if
:
location /wsDemo {
if($arg_ID = 12) {
proxy_pass http://myserver.com:80/wsDemo?ID=12;
break;
}
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}