Nginx 没有正确重定向

Nginx not redirecting properly

我有点困惑,我真的认为这将是一个简单的 5 分钟任务,但不是。我按照文档进行了重定向,但我无法使其正常工作,它只是附加了新 url 的倍数(不确定有多少,但我数过 [= 的边缘至少有 10 个20=] bar) 到原来的那个。这是我的服务器块配置:

server {
        listen 80;
        server_name old.i.p.address;
        return 301 new.i.p.address/redirect_page/;

        location ~ /si/home/0/ {
                 return 301 /si/home/;
                 }

        location = /favicon.ico { access_log off; log_not_found off; }
        location /static {
                      alias /home/rob/pcc_django/staticfiles/;
                      }

        location / {
                 proxy_set_header Host $http_host;
                 proxy_set_header X-Real-IP $remote_addr;
                 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                 proxy_set_header X-Forwarded-Proto $scheme;
                 proxy_pass http://unix:/run/gunicorn.sock;
        }
    }

抱歉,如果缩进错误,它在我的机器上的格式是正确的,我还没有弄清楚如何在这个网站上正确地保持代码块的格式。

我尝试了多个版本,在新 IP 地址的开头有和没有“http://”,我也试过有和没有“/homepage”。我也尝试过使用“重写”,因为最初我只是想要一个永久重定向,但这是唯一允许 ngingx 服务器启动的迭代,它在 url 栏中给出了奇怪的结果:

old.i.p.address/homepage/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/new.i.p.address/redirect_page/...etc ad infinitum

请问我该如何解决这个问题?

301 重定向将缓存在浏览器中,您可以clear the browser cache,然后重试return 301 http://new.i.p.address/redirect_page/;

浏览器将 new.i.p.address/redirect_page/ 字符串视为同一服务器上的相对 URI,从而在每次迭代中为您提供无限循环并连接 new.i.p.address/redirect_page/ 部分。例如,如果您有一个 return 301 /new.i.p.address/redirect_page/; 规则,该字符串将被视为绝对 URI,在每次迭代中为您提供相同的地址。唯一正确的方法是使用 http://(或 https://)前缀。正如@emptyhua 所说,HTTP 301 永久重定向由浏览器缓存,因此您应该清除缓存或从隐身模式尝试 window.