ОБРАТНЫЙ ПРОКСИ-СЕРВЕР NGINX
Топология домашней сети постепенно усложняется и, кажется, пора бы уже настроить обратный прокси-сервер. Суть его работы сводится к тому, чтобы перенаправлять запросы по разным серверам. Так, набрав в адресной строке браузера madmentat.ru, мы попадаем на Mad-PC3, а если mail.madmentat.ru, то на веб-морбу почтового сервера Mad-PC4. Ну, и таких поддоменов можно наделать чертову уйму, на все случаи жизни. К тому же, получается, все ssl сертификаты теперь хранятся в одном месте и больше не надо долго компостировать себе мозги, чтобы, например, включить https протокол на Микротике. Все делает уже знакомый нам и простой в использовании Cerbot.
Отмечу, что первоначальная настройка заняла у меня довольно много времени, мой nginx наотрез отказывался заводиться. Три дня искал причину, потом все-таки не выдержал и обратился за помощью к фрилансеру. Заплатил денег, но не так уж и много, за то уже вместе мы докапались до сути проблемы - оказалось все дело в том, что на том же компе (Mad-PC2) был установлен apache2, так что, если у вас по каким-то причинам не получается настроить обрытный прокси-сервер, необходимо убедиться, что больше никакие сервисы не перехватывают запросы, обращаемые через 80-й и 443-й порты. Для этого можно воспользоваться программой, вроде TCP Connector. Подключаемся на порт 80 и шлем запрос типа
<code>ProductOnly</code>
На самом деле, там пофигу чего писать - скорее всего, в ответ все равно вернется страничка в виде html кода, с сообщением об ошибке, и там будет видно что за сервак отработал по запросу. Если вы настраиваете nginx, то, соответственно, Апача там быть не должно, а если уж у вас по какой-то причине все-таки установлен Апач и вы не можете от него отказаться, тогда готовьтесь задрачиваться с настройкой портов, которые слушают ваши серваки, чтобы они друг другу не мешали.
В данном примере рассмотрим следующий кейс: наш виртуальный сервер Apache 2, расположенный, согласно схеме, на Mad-PC3 с контекстом test.madmentat.ru, слушает порт 8080. Итак, пожалуй, приступим.
Для начала установим сам nginx:
sudo apt install -y nginx
Далее создадим файл конфигурации.
sudo nano /etc/nginx/sites-available/test.conf
server { server_name test.madmentat.ru www.test.madmentat.ru; access_log /var/log/nginx/test.log; error_log /var/log/nginx/test-error.log; location / { proxy_pass http://192.168.88.238:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
sudo cp /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/test.conf
Теперь установим cerbot и установим сам сертификат на сервер.
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d test.madmentat.ru -d www.test.madmentat.ru
К слову, cerbot любит поебывать мозги, если не может достучаться до проксируемого хоста. Лучше всего там подготовить голый виртуальный сервер с обычными портами и стандартным index.html, "Hello World!", и только потом запустить скрипт на нашем nginx. Сам скрипт будет задавать вопросы, надо отвечать исходя из контекста - там ничего сложного. Вот, собственно, и все. Пример тут.