我如何使用 Nginx 对以斜杠结尾的 URL 进行 301 重定向?
How can I do a 301 redirect towards an URL ending in a slash with Nginx?
我有一个 nginx 网络服务器,它代理传递流量到我 LAN 上的不同服务。在最近更新其中一项服务后,重定向将按预期停止工作。重定向背后的服务是 Pi-Hole,所以我不能't/wan 修改 Web 服务的工作方式。我只想修复重定向。
我的实际 nginx 配置如下所示:
server {
listen 80;
listen [::]:80;
server_name servername.xyz localhost default;
access_log /var/log/nginx/servername-xyz.access.log;
error_log /var/log/nginx/servername-xyz.error.log;
location = /pihole {
return 301 http://servername.xyz/pihole/admin;
}
location = /pihole/ {
return 301 http://servername.xyz/pihole/admin;
}
location /pihole/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:31480/;
}
location = / {
return 418;
}
}
此配置运行良好。每次我在浏览器 http://servername.xyz/pihole
中写入时,我都会自动重定向到 http://servername.xyz/pihole/admin
并开始完美地使用 Pi-Hole 网络控制台。
在上次 Pi-Hole 更新中,他们做了一个小改动,导致重定向中断。现在,每次您请求 http://pi-hole.domain/admin
时,Web 控制台都会自动重定向到 http://pi-hole.domain/admin/
。 注意第二个末尾的斜线URL。
在我的配置中,这意味着以下行为:
- 我向浏览器请求
http://servername.xyz/pihole
- 我得到
301
然后去 http://servername.xyz/pihole/admin
- 在这里,我从 Pi-Hole 网络控制台得到了一个我不期望的重定向,它让我转到:
http://servername.xyz/admin/
。 注意结尾的斜杠。
当我进行到第三步时,重定向不允许我进入 Pi-Hole Web 控制台。我已尝试对规则进行一些更改,但我没有成功 objective 获得 301
朝向 http://servername.xyz/admin/
以避免 Pi-Hole 网络控制台重定向。
非常感谢 Richard's Smith 评论。它让我修复配置文件。现在文件中的 proxy_pass
操作如下所示:
location /pihole/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:31480/;
proxy_redirect http://servername.xyz/admin/ http://servername.xyz/pihole/admin/;
}
包含 proxy_redirect
指令后,事情又开始了。
我有一个 nginx 网络服务器,它代理传递流量到我 LAN 上的不同服务。在最近更新其中一项服务后,重定向将按预期停止工作。重定向背后的服务是 Pi-Hole,所以我不能't/wan 修改 Web 服务的工作方式。我只想修复重定向。
我的实际 nginx 配置如下所示:
server {
listen 80;
listen [::]:80;
server_name servername.xyz localhost default;
access_log /var/log/nginx/servername-xyz.access.log;
error_log /var/log/nginx/servername-xyz.error.log;
location = /pihole {
return 301 http://servername.xyz/pihole/admin;
}
location = /pihole/ {
return 301 http://servername.xyz/pihole/admin;
}
location /pihole/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:31480/;
}
location = / {
return 418;
}
}
此配置运行良好。每次我在浏览器 http://servername.xyz/pihole
中写入时,我都会自动重定向到 http://servername.xyz/pihole/admin
并开始完美地使用 Pi-Hole 网络控制台。
在上次 Pi-Hole 更新中,他们做了一个小改动,导致重定向中断。现在,每次您请求 http://pi-hole.domain/admin
时,Web 控制台都会自动重定向到 http://pi-hole.domain/admin/
。 注意第二个末尾的斜线URL。
在我的配置中,这意味着以下行为:
- 我向浏览器请求
http://servername.xyz/pihole
- 我得到
301
然后去http://servername.xyz/pihole/admin
- 在这里,我从 Pi-Hole 网络控制台得到了一个我不期望的重定向,它让我转到:
http://servername.xyz/admin/
。 注意结尾的斜杠。
当我进行到第三步时,重定向不允许我进入 Pi-Hole Web 控制台。我已尝试对规则进行一些更改,但我没有成功 objective 获得 301
朝向 http://servername.xyz/admin/
以避免 Pi-Hole 网络控制台重定向。
非常感谢 Richard's Smith 评论。它让我修复配置文件。现在文件中的 proxy_pass
操作如下所示:
location /pihole/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:31480/;
proxy_redirect http://servername.xyz/admin/ http://servername.xyz/pihole/admin/;
}
包含 proxy_redirect
指令后,事情又开始了。