Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по Linux (http://forum.oszone.net/forumdisplay.php?f=9)
-   -   nginx reverse proxy, 2 сайта, https и http (http://forum.oszone.net/showthread.php?t=354600)

YDen 27-11-2023 19:05 3020657

nginx reverse proxy, 2 сайта, https и http
 
Здравствуйте.
Подскажите пожалуйста по nginx reverse proxy.
Внутри ЛВС находятся 2 веб сервера на апаче: web1 и web2. Web1 работает на https (firma.ru, установлен сертификат letsencrypt), web2 - http. Соответственно перед ними стоит nginx reverse proxy. Для web1 на nginx выпущен и загружен второй сертификат letsencrypt (firma.ru).

конфиг nginx web1:
/etc/nginx/sites-available/firma.ru.conf
Код:

server {
        listen      80;
        listen      [::]:80;
        listen      443 ssl http2;
        listen      [::]:443 ssl http2;
        server_name firma.ru;

        ssl_certificate "/etc/letsencrypt/live/firma.ru/fullchain.pem";
        ssl_certificate_key "/etc/letsencrypt/live/firma.ru/privkey.pem";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;

        proxy_redirect      off;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;

        location / {
                proxy_pass https://firma.ru/;
        }
}

Вопрос:
1. оптимален ли конфиг nginx для web1?
2. какой оптимальный код nginx для сайта web2 (http, http://10.12.0.245:9090/)?

благодарю

shisik 27-11-2023 20:08 3020659

Цитата:

Цитата YDen
Внутри ЛВС находятся 2 веб сервера на апаче: web1 и web2. Web1 работает на https (firma.ru, установлен сертификат letsencrypt), web2 - http. Соответственно перед ними стоит nginx reverse proxy. Для web1 на nginx выпущен и загружен второй сертификат letsencrypt (firma.ru). »

А зачем два раза сертификат? Куда ваш домен привязан? На Apache web1 или на nginx?

Я бы сделал оба Апача на http без всяких сертификатов, домен привязал бы к IP nginx и использовал бы его в качестве load balancer с этими двумя Апачами в качестве бекендов https://docs.nginx.com/nginx/admin-g...load-balancer/

Или вам не это нужно? Тогда я не понял задачу.

YDen 27-11-2023 20:51 3020664

Цитата:

Цитата shisik
А зачем два раза сертификат? Куда ваш домен привязан? На Apache web1 или на nginx? »

Два субдомена (d1.firma.ru - web1 и d2.firma.ru - web2), привязаны к nginx.
Два раза сертификат - изначально работал один сервер, web1, без обратного прокси. Когда появилась необходимость в web2, то не стал ломать "работает-не трожь". Хочу с правильной работой nginx разобраться, а потом уже с web1 убрать https.
web1 и web2 совершенно разные сервера, балансировать нагрузку не зачем.

Цель: за обратным прокси расположить несколько разных серверов. Со схемами https -> https и https -> http.

благодарю

shisik 27-11-2023 22:21 3020666

Ну со вторым всё просто: создаёте виртуальный хост в nginx на d2.firma.ru и указываете его ip в proxy_pass. У меня это обычно вот так:

Код:

    location / {
        proxy_pass http://10.12.0.245:9090;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
    }

Потом устанавливаете на него сертификат для d2.firma.ru как обычно. На nginx, само собой. В принципе здесь всё.

Первый я бы настроил точно так. Не знаю, будет ли вообще работать по https между nginx и Apache. Если IP указать, то точно не будет сертификат приниматься. Ну может там другой домен какой - не знаю, тогда может и будет. Но я так никогда не делал.

А куда у вас основной домен смотрит? А то судя по конфигурации из первого собщения он сам на себя замыкается: принимает запросы на firma.ru и отправляет на себя же?

YDen 28-11-2023 06:24 3020670

Цитата:

Цитата shisik
А куда у вас основной домен смотрит? А то судя по конфигурации из первого собщения он сам на себя замыкается: принимает запросы на firma.ru и отправляет на себя же? »

Благодарю за информацию.
Основной домен, firma.ru, я не использую пока. В конфиге его указал для простоты.
Сайт web1, тот что d1.firma.ru работает под конфигом nginx, ниже. В web1 в апаче прописано, что он отвечает на https://d1.firma.ru - поэтому в proxy_pass указан опять этот адрес.

Код:

server {
        listen      80;
        listen      [::]:80;
        listen      443 ssl http2;
        listen      [::]:443 ssl http2;
        server_name d1.firma.ru;

        ssl_certificate "/etc/letsencrypt/live/d1.firma.ru/fullchain.pem";
        ssl_certificate_key "/etc/letsencrypt/live/d1.firma.ru/privkey.pem";
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout  10m;

        proxy_redirect      off;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;

        location / {
                proxy_pass https://d1.firma.ru/;
        }
}

Еще раз благодарю.

shisik 28-11-2023 16:36 3020682

Цитата:

Цитата YDen
Сайт web1, тот что d1.firma.ru работает под конфигом nginx, ниже. В web1 в апаче прописано, что он отвечает на https://d1.firma.ru - поэтому в proxy_pass указан опять этот адрес. »

Что-то я не понял. А на какой IP смотрит d1.firma.ru? На web1 с Апачем, или на сервер с nginx? Как они оба могут на него отзываться?
Может у вас этот сайт потому и работает, что он на Апач настроен, а nginx просто не участвует? И вы видите рабочий сайт, но чисто с Апача.

Можете посмотреть Response Headers в браузере на вкладке Network, там есть поле Server и если ответ от nginx, то там будет nginx и версия. Ну и то жесамое для Апача - будет Apache.

YDen 28-11-2023 16:57 3020684

Цитата:

Цитата shisik
Что-то я не понял. А на какой IP смотрит d1.firma.ru? На web1 с Апачем, или на сервер с nginx? Как они оба могут на него отзываться?
Может у вас этот сайт потому и работает, что он на Апач настроен, а nginx просто не участвует? И вы видите рабочий сайт, но чисто с Апача. »

Внешний ip смотрит на nginx. Если быть точнее, то микротик дст натит на nginx. Сегодня с экспериментами сервер с nginx (виртуалка proxmox с ubuntu server) в аут ушел. Сайт d1.firma.ru стал недоступен, ошибка 502, nginx.

shisik 28-11-2023 17:58 3020692

Тогда непонятно как может работать вот это

Код:

proxy_pass https://d1.firma.ru/;
Как nginx узнает, что надо на Апач запросы отправлять? d1.firma.ru указывает на него самого. Где вообще указан адрес Апача с web1?


Время: 14:36.

Время: 14:36.
© OSzone.net 2001-