我目前正在使用nginx作为websocket的正向代理,到目前为止,它一直工作良好。客户端连接:
var ws = new WebSocket('ws://10.30.0.142:8020/');
我也想转发发帖请求。在这种情况下,客户端将/ post添加到ws地址,以便将该地址扩展为'ws://10.30.0.142:8020 / post'。但是,对该地址的请求返回:
http://10.30.0.142/post 404 (Not Found)
我正在使用以下配置文件(nginx.conf),这对于发布请求(位置/ post /)来说很可能是错误的:
upstream websocket {
server 127.0.0.1:8010;
}
server {
listen 8020;
server_name server;
root /var/www/html;
expires off;
keepalive_timeout 0;
access_log /dev/null;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
location /post/ {
proxy_pass http://127.0.0.1:8010;
}
location ~* \.(?:css|js|map|jpe?g|gif|png)$ { }
}
}
如何正确配置此文件以解决此问题?
答案 0 :(得分:1)
幸运的是,修复非常简单:只需将行location /post/ {
更改为location /post {
,多余的斜杠仅匹配对/post/<something else>
的请求,根据您的描述,这不是你想要的。
实际上,如果您只想匹配对location =/post {
的请求,而不匹配对/post
或/post<some other string>
的请求,则甚至可以将该行更改为/post/<some other string>