我正试图在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] 举报,一经查实,本站将立刻删除。