Proxy-Nginx+Apache

Частный пример применение отдельной виртуальной машины с NGINX как прокси.

Отредактированно с помощью ChatGPT-4

Дано:
=============
маршрутизатор
192.168.1.1
=============
proxy-nginx 
192.168.1.202
=============
хостинг сайтов на борту с APACHE
и работающим сайтом znote.ru на wordpress
192.168.1.201
=============
Остальное нас пока не интересует.

Задача:

  • Установить и настроить Certbot на центральном NGINX сервере для получения SSL-сертификатов.
  • Настроить NGINX на центральном сервере для проксирования запросов на сервер хостинга сайтов.
  • Обновить конфигурацию Apache на сервере хостинга сайтов, чтобы он работал с проксированием.

Решение:

1. Установка и настройка Certbot на центральном NGINX сервере

Сначала установите Certbot на центральный NGINX сервер и получите сертификаты:

sudo apt update
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d znote.ru -d www.znote.ru

2. Настройка NGINX для проксирования запросов

Создайте или отредактируйте конфигурационный файл для вашего сайта на центральном NGINX сервере, например,

/etc/nginx/sites-available/znote:

nginx

server {
listen 80;
server_name znote.ru www.znote.ru;

location / {
return 301 https://$host$request_uri;
}
}

server {
listen 443 ssl;
server_name znote.ru www.znote.ru;

ssl_certificate /etc/letsencrypt/live/znote.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/znote.ru/privkey.pem;

location / {
proxy_pass http://192.168.1.201;
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;
}
}

 
 

Активируйте конфигурацию и перезапустите NGINX:

sudo ln -s /etc/nginx/sites-available/znote /etc/nginx/sites-enabled/
sudo nginx -t sudo systemctl reload nginx

3. Обновление конфигурации Apache на сервере хостинга сайтов

Убедитесь, что конфигурация Apache на сервере хостинга сайтов соответствует следующим требованиям.

Удалите или закомментируйте перенаправление на HTTPS в конфигурации Apache (znote.conf), так как NGINX будет заниматься этим:

apache

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/znote
ServerName znote.ru
ServerAlias www.znote.ru

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined


</VirtualHost>

Проверьте и перезапустите Apache:

 
sudo apachectl configtest
sudo systemctl restart apache2

И наконец в самом WORDPRESS

Если ваш сайт работает на WordPress, то возможно, что он использует абсолютные URL и требует дополнительной настройки для работы за прокси. Добавьте следующий код в файл wp-config.php для правильной обработки HTTPS-запросов:

 

/* Произвольные значения добавляйте между этой строкой и надписью "дальше не редактируем". */
if ($_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
$_SERVER['HTTPS'] = 'on';
}

 

/* Это всё, дальше не редактируем. Успехов! */