我有以下配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
index index.html;
}
server_name command_asdf
location /asdf/ {
proxy_pass http://127.0.0.1:3001/;
}
当我去http://服务器/asdf/index.html一切正常。
但是,如果我访问 http ://server/asdf/ 或 http ://server/asdf,它们都会将我重定向到 http ://server/index.html,而不是 http ://server/asdf/index.html
我花了几个小时试图弄清楚如何让它重定向到子目录上的索引页,但遗憾的是没有成功。
我有许多需要使用 proxy_pass 的服务器,但是上面是我能展示的最简单的配置。
谢谢!
答案1
几周后,我终于解决了这个问题。解决方案是:
proxy_redirect / $request_uri;
因此,当用户访问 foo.com/bar/ 时,它将重定向到 foo.com/index.html
这发生在 proxy_pass 服务器发出的 302 重定向中。
上面添加到我的配置中的行将正确地将 foo.com/bar/ 重定向到http://foo.com/bar/然后加载index.html页面。
完整配置:
server_name bar;
location /bar/ {
proxy_pass http://127.0.0.1:3001/;
proxy_redirect / $request_uri;
}
作为参考,$request_uri 等于位置和子目录,即 foo.com/bar/