【问题标题】:Tornado app in multiple nginx locations多个 nginx 位置中的 Tornado 应用程序
【发布时间】:2014-05-03 15:10:56
【问题描述】:

我有 2 个龙卷风应用程序,我正在尝试使用 nginx 作为它们的代理,但我需要将这些应用程序提供在相同的地址但不同的位置(访问 app1 使用 URL http://myserver/app1app2 使用 URL http://myserver/app2)。

我的nginx配置文件/etc/nginx/conf.d/myserver.conf

upstream app1 {
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}

upstream app2 {
    server 127.0.0.1:9081;
    server 127.0.0.1:9082;
}

server {
    listen 80;

    access_log  /var/log/nginx/myserver.access.log;
    error_log   /var/log/nginx/myserver.error.log;

    location app1/static {
        root /path/to/app1/;
        if ($query_string) {
            expires max;
        }
    }

    location app2/static {
        root /path/to/app2/;
        if ($query_string) {
            expires max;
        }
    }

    location /app1/ {
        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_pass http://app1/;
    }

    location /app2/ {
        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_pass http://app2/;
    }
}

例如,当我通过龙卷风访问 app1 时,它可以正常工作:

  • 通过龙卷风:http://myserver:8081/ 重定向到登录 http://myserver:8081/auth/login
  • 通过 nginx:http://myserver/app1 重定向到 http://myserver/auth/login(它应该重定向到 http://myserver/app1/auth/login)。

什么是正确的 nginx 配置才能使其工作?

【问题讨论】:

    标签: nginx proxy location config tornado


    【解决方案1】:

    这由proxy_redirects 设置控制。您已将其关闭,因此当龙卷风服务器重定向到 /auth/login 时,它会按原样通过。您需要让 tornado 服务器知道外部世界看到的它的 url(即在所有路由中包含 /app1/,甚至在内部重定向),或者打开 proxy_redirects 让 nginx 重新映射它们。我推荐前者,因为proxy_redirects 仅适用于重定向,您通常会在其他地方遇到类似问题(静态内容的 URL、提交等)。

    【讨论】:

    • 确实,在这种情况下使用proxy_redirect 会给表单提交和静态文件带来更多麻烦。我试图避免更改 Tornado 中的路线,但正如您指出的那样,这是最好的解决方案。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-24
    • 2016-07-10
    • 1970-01-01
    • 2021-01-30
    相关资源
    最近更新 更多