Несколько приложений на Nginx - PullRequest
4 голосов
/ 11 августа 2011

Я пытаюсь маршрутизировать трафик между несколькими вышестоящими серверами на 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 в URL?

Спасибо

1 Ответ

4 голосов
/ 11 августа 2011
location /app_a/ {
    rewrite /app_a/(.*) /$1 break;
    proxy_set_header Host $http_host;
    proxy_pass http://app_a;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...