regorov
@regorov
Системный администратор

Как переадресовать домен в nginx на другой локальный IP адрес?

В наличии:
На входе Mikrotik (внешний IP 99.99.99.99; локальный IP 192.168.0.1)
Web server NGINX (локальный IP 192.168.0.2)
Mail server iRedmail (локальный IP 192.168.0.3)
Настройки:
На Mikrotik стоит переадрессация внешнего порта 80 на локальный IP 192.168.0.2:80 (NGINX)
На NGINX:
server {
       listen 80;
       server_name mail.babruisk.ru www.mail.babruisk.ru;

       location / {
              proxy_pass                  http://192.168.0.3:80/;
              proxy_set_header        Host mail.babruisk.ru;
              proxy_set_header        X-Real-IP          $remote_addr;
        }
}


Переадрессация не работает, но если закомментировать две строки proxy_set_header, то идет подмена домена на локальный адрес снаружи.

Подскажите, пожалуйста, как правильно настроить переадрессацию в nginx.
________________________________________________________________________________________________
Ответ был найден:
server {
       listen 80;
       server_name mail.babruisk.ru www.mail.babruisk.ru;

       location / {
              proxy_pass                  http://192.168.0.3:80;
              proxy_redirect            default;
              proxy_redirect            http://192.168.0.3:80/ http://mail.babruisk.ru/; 
        }
}


НО Задача усложнилась:
Так как iRedMail использует SSL и сам локально через конфиг NGINX редиректит всё c 80 на 443 (.../mail .../SOGo .../iredadmin), переделал конфиг:
server {
    listen 80;
    listen 443;
    server_name mail.babruisk.ru www.mail.babruisk.ru;

    location / {
        proxy_pass      https://192.168.0.3:443;
        proxy_redirect  default;
        proxy_redirect  https://192.168.0.3:443/ https://mail.babruisk.ru/;
    }
}


Извне заходит по mail.babruisk.ru, показывает морду, дальше не идет (((
По https выдает ошибку SSL
Признаюсь перелопачивать весь конфиг nginx на mail сервере не хочу, так как там можно понаделать ошибок и в итоге закопаться.
Как сделать правильные проксируемые https запросы?
_____________________________________________________________________________________________________________
ВСЕМ СПАСИБО!!! Ответ нашел:
Для проксирования https запросов сделал такой конфиг:

server {
    listen 443;
    server_name mail.babruisk.ru www.mail.babruisk.ru;

    access_log  /var/log/nginx/ssl-access.log;

    ssl                 on;
    ssl_certificate     /var/ssl/iRedMail.crt;
    ssl_certificate_key /var/ssl/iRedMail.key;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;

    location / {
        proxy_pass      https://192.168.0.3/;
        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;
        proxy_pass_header       Set-Cookie;
    }
}


Еще перекинул с MAIL сервера SSLки на WEB сервер
Все заработало!!!
  • Вопрос задан
  • 6760 просмотров
Решения вопроса 1
regorov
@regorov Автор вопроса
Системный администратор
Mihai, Вы меня улыбнули ))) Не поверите и mail.babruisk.ru никакого нет ))) Не буду же я тут расписывать свою сеть с реальным IP )))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы