微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

nginx上有多个应用

我正试图在Nginx上的多个上游服务器之间路由流量,如下所示:

upstream app_a {
    server unix:/tmp/app_a.sock fail_timeout=10;
    # For a TCP configuration:
    # server localhost:8000 fail_timeout=0;
}
server {
    #listen   80; ## listen for ipv4; this line is default and implied
    #listen   [::]:80 default ipv6only=on; ## listen for ipv6

    index index.html index.htm;

    server_name localhost;

    root /home/ubuntu/app_a/www/staging/static;

    location ~ ^/app_a/(.*)${
        try_files $1 @proxy_to_app_a;
    }

    location @proxy_to_app_a {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;

        proxy_pass   http://app_a;
    }

不幸的是,应用程序不知道完整的uris并期望坐在root上 – 这意味着我需要在传递给应用程序时重新编写uri,这就是为什么我认为这可能有效:

   location ~ ^/app_a/(.*)${
        try_files $1 @proxy_to_app_a;
    }

如果位置只是/(由于上述根本问题),该应用程序工作正常,但这个基于正则表达式的解决方案似乎不起作用.我需要做什么,以便应用程序在URL中获取/而不是app_a?

谢谢

解决方法:

location /app_a/ {
    rewrite /app_a/(.*) /$1 break;
    proxy_set_header Host $http_host;
    proxy_pass http://app_a;
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐