Добрый день.
Есть стенд, из балансера (haproxy) и веб-серверной связки nginx+apache.
Прикручиваю сертификаты letsencrypt'а к доменам. Сертификаты располагаю на haproxy, дальше расшифрованный запрос приходит на Nginx, далее пересылается apache. Т.е. связка nginx+apache работает с расшифрованным запросом.
Теперь нужно сайт на вордпрессе перевести на https. В настройках админки «Общие» меняю http на https - выбивает из админки, зайти в нее нельзя - страница не найдена, адрес заменен на https, сам сайт становится недоверенным...
Убираю хапрокси из цепочки, перекидываю сертификаты на nginx, прописываю из в конфиге nginx - Так же меняю в настройках http на https - опять всё ломается...
Другие сайты на других движках при такой схеме работают. Проблема (насколько мне видно) в объяснении вордпрессу, что ходить надо по https, что-то недопрописано для админки и для самого. Сайт новый, чистый, тема стандартная.
1. Пробовала и с настройкой на хапрокси редиректа с 80 порта на 443, и без;
2. Проверила правильность установки сертификата через сайт ssllabs.com/ssltest/ - сертификат установлен правильно.
Конфиги при полной цепочке (хапрокси с сертификатом --> nginx --> apache):
/etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 10000
user haproxy
group haproxy daemon
tune.ssl.default-dh-param 2048
stats socket /var/lib/haproxy/stats
ssl-default-bind-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
ssl-default-bind-options no-sslv3 no-tls-tickets
ssl-default-server-ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS
ssl-default-server-options no-sslv3 no-tls-tickets
...
frontend http
bind :80
reqadd X-Forwarded-Proto:\ http
default_backend localhost
use_backend name.domen.ru if { hdr_dom(host) -i name.domen.ru } { dst_port 80 }
frontend https
bind :443 ssl crt-list /etc/haproxy/certs/crt.txt
http-request set-header X-SSL %[ssl_fc]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
reqadd X-Forwarded-Proto:\ https
default_backend localhost
http-response set-header Strict-Transport-Security max-age=15768000
use_backend name.domen.ru if { hdr_dom(host) -i name.domen.ru } { dst_port 443 }
backend name.domen.ru
redirect scheme https if { hdr(Host) -i name.domen.ru } !{ ssl_fc }
server name.domen.ru 192.168.1.101:80
/etc/nginx/conf.d/name.domen.ru
upstream name.domen.ru.80 {
server 192.168.1.101:8080;
}
server {
listen 192.168.1.101:80;
server_name name.domen.ru;
error_log /var/log/name.domen.ru80-error.log;
access_log /var/log/name.domen.ru80-access.log;
location / {
proxy_pass http://name.domen.ru.80;
proxy_redirect off;
proxy_set_header Host $host;
}
}
/etc/httpd/conf.d/httpd-vhost.conf
VirtualHost *:8080>
ServerName www.name.domen.ru
ServerAlias name.domen.ru
ServerAdmin name@domen.ru
DocumentRoot /var/www/name.domen.ru
ErrorLog "/var/www/name.domen.ru/log/apache_error.log"
CustomLog "logs/name.domen.ru-access.log" common
</VirtualHost>
Пробовала напрямую принимать запрос https на nginx, тогда конфиг апача не трогаю, конфиг nginx такой:
/etc/nginx/conf.d/name.domen.ru.conf
upstream name.domen.ru.443 {
server 192.168.1.101:8080;
}
server {
listen 192.168.1.101:443;
server_name name.domen.ru;
error_log /var/log/name.domen.ru443-error.log;
access_log /var/log/name.domen.ru443-access.log;
listen 443 ssl;
ssl on;
ssl_certificate /etc/letsencrypt/live/name.domen.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/name.domen.ru/privkey.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/nginx/ssl/name.domen.ru/dhp-2048.pem;
location / {
proxy_pass http://name.domen.ru.443;
proxy_redirect off;
proxy_set_header Host $host;
}
}
Во всех мануалах замена c http на https происходит в админке. Подскажите, что не так делаю?