【发布时间】:2011-10-24 22:28:30
【问题描述】:
我正在尝试在 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;
}
如果位置只是/(由于上述根本问题),该应用程序可以正常工作,但是这种基于正则表达式的解决方案似乎不起作用。我需要做什么才能让应用在网址中获得/ 而不是app_a?
谢谢
【问题讨论】:
标签: nginx