Maxim Dounin
December 11, 2013 09:16AM
Hello!

On Wed, Dec 11, 2013 at 06:04:55AM -0500, mnsold wrote:

> Подскажите, как можно организовать прокисрование 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) Весь конфиг nginx'а может быть записан в одном файле,
nginx.conf. Все попытки разделения на множество маленьких
файликов по доменам - это лишь средство для упрощения
автоматизации, обычно применяемое в линуксе. Если вам хочется
записать всё в "одном конфиге" - просто напишите всё в nginx.conf,
и с головой будет в порядке.

2) Несколько блоков server{} в рамках одного nginx.conf - это
нормально, и это хороший, годный способ писать простую
конфигурацию. Если у вас два разных виртуальных сервера, которые
обрабатываются по разному - напишите для них разные блоки
server{}, и с головой будет в порядке.

[...]

> в одном из location указать проксирование на apache
> if ( $scheme = "http" ) {
> proxy_pass http://localhost:8080;
> }
> if ( $scheme = "https" ) {
> proxy_pass https://localhost:8083;
> }

[...]

> то в 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;

Не надо делать ни так, ни так. Если хочется, чтобы запросы,
пришедшие по https, проксировались с использованием https, а
запросы, пришедшие по http, проксировались без него, то
правильно делать так:

server {
listen 80;

location / {
proxy_pass http://upstream;
}
}

server {
listen 443 ssl;

location / {
proxy_pass https://upstream;
}
}

Блоки server{} - это инструмент, специально предназначенный для
того, чтобы задавать разную обработку для разных виртуальных
серверов. Его и надо использовать для решения таких задач.

Отдельный вопрос - для чего в рамках одного сервера гонять трафик
по SSL, тратя ресурсы на шифрование, но это уже скорее из области
философии.

--
Maxim Dounin
http://nginx.org/

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

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

mnsold December 11, 2013 06:04AM

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

Maxim Dounin December 11, 2013 09:16AM

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

mnsold December 11, 2013 10:06AM

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

mnsold December 11, 2013 10:23AM

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

Anton Kiryushkin December 11, 2013 10:30AM

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

mnsold December 11, 2013 10:41AM

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

Andrey Oktyabrskiy December 11, 2013 11:44AM

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

mnsold December 11, 2013 12:08PM

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

Maxim Dounin December 11, 2013 10:36AM

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

mnsold December 11, 2013 11:58AM

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

Maxim Dounin December 11, 2013 01:24PM

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

mnsold December 11, 2013 03:45PM

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

Maxim Dounin December 11, 2013 07:36PM

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

Gena Makhomed December 11, 2013 02:44PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 248
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready