2011-08-11 54 views
4

多個應用程序我試圖跨越多個上游服務器路由流量上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; 
    } 

不幸的是,應用程序有沒有完整的URI的知識,希望可以坐在根 - 這意味着我需要重新寫的URI傳遞給應用程序,這就是爲什麼我認爲這可能工作時:

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

應用程序工作正常,如果位置剛好/(因爲上述根問題),但這種正則表達式基於網絡的解決方案似乎不起作用。我需要做什麼,因此該應用在url中獲取/而不是app_a

感謝

回答

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

謝謝!作品魅力! – malangi