Подскажите, как можно организовать прокисрование http и https в одном конфигурационном файле, если есть несколько веб-серверов порты у которых отличаются от 80 и 443. Опишу общий вариант, чтобы было понятнее о чем речь, думаю в организациях, у которых множество сервисов, такое или очень похожее часто встречается.
Для упрощения пусть будут несколько веб-серверов (apache,tomcat,glassfish,jbos ... и т.д.) на одном сервере (в жизни конечно не васе прям так, но доля правды есть, да и заменить один хост на хост в сети не так и сложно). Пусть будет сервер в лок сети с установленым на нем ПО: - nginx, порты http=80 https=443, он же проксирует все во нешний мир. - apache, порты http=8080 https=8083 - glassfish, порты http=8181 https=8183 1. Каким образом нужно написать конфиг для проксирования, чтобы http и https были в одном конфиге? 2. Каким образом нужно написать конфиг для проксирования, чтобы http и https были в одном конфиге, при условии, что приложения на apache/glassfish находятся не в корне веб сервера? 2й вариант наиболее интересен! Несколько примеров: --------------------------------------------- Если проксирование идет от корня (вопрос 1), и порты отличны от 80 и 443, есть способ и он работает, но я не уверен что это правильное решение, может нужно по другому прописывать?: в одном из location указать проксирование на apache if ( $scheme = "http" ) { proxy_pass http://localhost:8080; } if ( $scheme = "https" ) { proxy_pass https://localhost:8083; } в другом location указать проксирование на glassfish if ( $scheme = "http" ) { proxy_pass http://localhost:8181; } if ( $scheme = "https" ) { proxy_pass https://localhost:8183; } Но в этом варианте нельзя указать проксирование к контексту (вопрос 2), например http://localhost:8080/app ,т.к. nginx пишет ошибку nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" По большом счету нужно проксирование с похожими возможностями, но чтобы можно было проксировать не только от корня, а и какое-то отдельной приложение. --------------------------------------------- Понимаю, что если сделать например так: - apache повесить на сетевой интерфейс 127.0.1.1, порты http=80 https=443 - glassfish повесить на сетевой интерфейс 127.0.1.2, порты http=80 https=443 то в location можно проксирование прописать следующим образом без использования if proxy_pass $scheme://127.0.1.1; | proxy_pass $scheme://127.0.1.1/app; или proxy_pass $scheme://127.0.1.2; | proxy_pass $scheme://127.0.1.2/app; Но этот способ не очень применим, т.к. повлечет за собой очень много изменений в сети. --------------------------------------------- Спасибо. Posted at Nginx Forum: http://forum.nginx.org/read.php?21,245412,245412#msg-245412 _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru