gpt4 book ai didi

django - 使用 Nginx 作为代理服务器,使用 django 作为后端时如何正确处理重定向响应

转载 作者:行者123 更新时间:2023-12-04 18:09:58 25 4
gpt4 key购买 nike

我有一个 Django 应用程序,最近我需要启动一个测试版。我想保持当前运行的应用程序不变,并在 Nginx 的帮助下将所有以“/beta”开头的请求重定向到 beta 应用程序。这是我的 conf

    location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 360;
proxy_pass http://localhost:8000/;
}

location /beta/ {
rewrite ^/beta/(.*)$ /$1 break;
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 360;
proxy_pass http://localhost:8001/;
}

这是可行的,但有一个问题,当应用程序返回 301 响应时,主要是当用户需要登录访问某些资源时,URL 会变成旧的。

例如,如果 /events是否需要登录。

http://example.com/beta/events -> http://example.com/login?next=/events/

如何在不更改应用程序代码的情况下解决此问题? (Nginx 解决方案?)

最佳答案

试试 proxy_redirect .

"This directive sets the text, which must be changed in response-header "Location" and "Refresh" in the response of the proxied server."



所以
    proxy_redirect http://example.com/ http://example.com/beta/;

当然,这仅适用于代理服务器发出的重定向。我还假设所有重定向都有相同的问题。

提示:如有必要,您可以使用多个 proxy_redirect 指令。

关于django - 使用 Nginx 作为代理服务器,使用 django 作为后端时如何正确处理重定向响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16671699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com