Издание:Условный Расположение маршрутизации - Nginx
У меня есть два приложения, обслуживаемые одним Nginx 1.5.5 веб-сервера на одном домене, www.domain.com.
Поскольку они оба слушают в тех же местах, я добавил заголовок APP = ONE или TWO, который я установил, когда приложение сначала вызвано. Пример ниже.
location ^/APPONE {
proxy_pass http://APPONE;
add_header APP ONE;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ^/APPTWO {
proxy_pass http://APPTWO;
add_header APP TWO;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Из-за плохой конструкции приложения приложения запрашивают нижеследующие местоположения, не используя имя приложения в качестве docroot. Как пример ниже.
location ~ ^/(framerwork1/|framerwork2/|framerwork3/) {
proxy_pass http://APPONE;
add_header APP ONE;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ ^/(framerwork1/|framerwork2/|framerwork3/) {
proxy_pass http://APPTWO;
add_header APP TWO;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Итак, я добавил APP один или два, заголовок, чтобы отделить два, но я, если заявления на доверенности их на основе заголовка не принимаются Nginx. Пример ниже.
if ($http_host ~ 'APP=ONE') {
location ~ ^/(framerwork1/|framerwork2/|framerwork3/) {
proxy_pass http://APPONE;
add_header APP ONE;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
if ($http_host ~ 'APP=TWO') {
location ~ ^/(framerwork1/|framerwork2/|framerwork3/) {
proxy_pass http://APPTWO;
add_header APP TWO;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Вопрос: Как я могу проксировать эти два приложения успешно на основе заголовка? Обратите внимание: я не могу использовать другой серверный блок или домен. Они должны быть одинаковыми.
Заранее спасибо.
Чтобы быть ясным, что вы надеетесь, произойдет, когда вы установите «add_header APP ONE»; ? – Danack
@Danack Это добавит переменную заголовка, которую я могу использовать для фильтрации. Это неправильный способ сделать это? – Rhys
Заголовок будет добавлен в запрос на proxy_server по запросу, сделанному в/APPONE, он не будет установлен клиентами для будущих запросов, которые они делают для местоположения/framerwork1. – Danack