ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Проксирование http и https в одном конигурационном файле, на порты отличные от 80 и 443


  • To: nginx-ru@xxxxxxxxx
  • Subject: Проксирование http и https в одном конигурационном файле, на порты отличные от 80 и 443
  • From: "mnsold" <nginx-forum@xxxxxxxx>
  • Date: Wed, 11 Dec 2013 06:04:55 -0500
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=helium.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=7aBRX0uNxBI2KTxp7JRMiYJq5SZOe0OE/w5RbA17IaM=; b=IGkPgXjxzjsmCN0iWneOXZtoDXwkwvgGXwMYiLoY+h16pwFPnl6TQ/+1fNLezwOyyE4LjFakJ+BEpyaDbjjmzSOG21IBBheSGuZ7639WS5If0BpLQspuUVxdQh+r+DmO9l5JGFSrhR+Grti0X4spmJfpMD73cFory5tihqAcYH8=;

Подскажите, как можно организовать прокисрование 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@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.