NGINX 重定向,同时避免永久循环

问题描述 投票:0回答:0

我正在尝试创建一个 nginx 配置,将发送到端口 80 上的服务器的所有流量路由到端口 5000,但以下情况除外:

如果地址是/Home/Error,我希望它被重定向到https://somesite.azurewebsites.net/home/unblock

如果地址是/Home/BlockerHasError,我希望它被重定向到https://somesite.azurewebsites.net/home/error

如果地址是/Home/ErrorNotBlocked,我希望它被重定向到https://somesite.azurewebsites.net/home/notblocked

如果地址是 /Home/Foo 我希望它被重定向到 /Home/Error 但我不希望之前的规则发挥作用。基本上如果有人去 /Home/Error 它应该被重定向到 https://somesite.azurewebsites.net/home/unblock,但如果他们去/Home/Foo,他们应该去/Home/Error(实际页面,没有重定向)。

我需要重定向为 302 并且不区分大小写。

我已经接近以下配置,但我似乎无法让 /Home/Foo 重定向工作。没有重定向发生,我只是留在 http://mysite/Home/Foo 而不是 http://mysite/Home/Error。

server {
    listen 80;
    server_name myServerName;

    location /Home/Error {
        return 302 https://somesite.azurewebsites.net/home/unblock;
    }

    location /Home/BlockerHasError {
        return 302 https://somesite.azurewebsites.net/home/error;
    }

    location /Home/ErrorNotBlocked {
        return 302 https://somesite.azurewebsites.net/home/notblocked;
    }

    location /Home/Foo {
        return 302 /Home/Error;
    }

    location / {
        proxy_pass http://localhost:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
    }
}

nginx
© www.soinside.com 2019 - 2024. All rights reserved.