我正在尝试在 Nginx 后面的端口 8080 上设置一个服务器。
我希望当尝试访问 myserver/sub 时,/sub 之后的所有内容都重定向到 8080,而不重定向 sub。目前,我无法从 URL 中删除 sub。
我的位置配置是:
location /sub
{
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
proxy_set_header Connection $connection_upgrade;
Upgrade $http_upgrade;
proxy_pass_header Upgrade;
proxy_pass_header Connection;
rewrite /sub/(.*) /$1 break;
proxy_pass http://localhost:8080;
}
如您所见,我有一个开发版的 nginx 来代理 websocket……
要清楚:我想要的是,如果我写入 url myserver/sub/connect,它将转发相当于 myserver:8080/connect 的 URL,而 url myserver/sub 将相当于 myserver:8080。但是,用户必须不知道它发生在端口 8080 上,并且必须认为所有事情都在 /sub 中。
答案1
请阅读文档:http://nginx.org/r/proxy_pass 并替换您的:
location /sub
{
[...]
rewrite /sub/(.*) /$1 break;
proxy_pass http://localhost:8080;
}
和
location /sub/ {
[...]
proxy_pass http://localhost:8080/;
}