Отредактированно с помощью ChatGPT-4
Дано:
=============
маршрутизатор
192.168.1.1
=============
proxy-nginx
192.168.1.202
=============
хостинг сайтов на борту с APACHE
и работающим сайтом znote.ru на wordpress
192.168.1.201
=============
Остальное нас пока не интересует.
Задача:
Решение:
Сначала установите Certbot на центральный NGINX сервер и получите сертификаты:
Создайте или отредактируйте конфигурационный файл для вашего сайта на центральном NGINX сервере, например,
/etc/nginx/sites-available/znote
:
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
Убедитесь, что конфигурация Apache на сервере хостинга сайтов соответствует следующим требованиям.
Удалите или закомментируйте перенаправление на HTTPS в конфигурации Apache (znote.conf), так как NGINX будет заниматься этим:
<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';
}
/* Это всё, дальше не редактируем. Успехов! */