Я успешно настроил сайт WordPress, работающий на докеризованном nginx. Когда сайт WordPress запущен и работает, я могу перейти на домашнюю страницу: https://мой_домен.com
или любые ссылки или на wp-админ/...
(после входа в /wp-логин.php
который доступен) без каких-либо проблем.
Но когда я иду в https://мой_домен.com/пример-страницы
или же https://мой_домен.com/post-id
или же /wp-админ
(если не залогинился) сразу перенаправляет на proxy_pass http://wordpress_host:80
(устанавливается в файле конфигурации nginx), что не может быть правильным, он должен https://мой_домен.com/post-id
в браузере клиента.
браузер клиента неверный URL
с маршрутом /вп-админ/
перед входом в систему, если я добавлю index.php
к /wp-admin/index.php
работает а без него нет
Вот мой конфиг nginx:
сервер {
слушать 80;
слушать [::]:80;
имя_сервера мой_домен.com www.мой_домен.com;
место расположения / {
вернуть 301 https://my_domain.com$request_uri;
}
}
сервер {
слушать 443 ssl http2;
имя_сервера мой_домен.com www.мой_домен.com;
SSL включен;
server_tokens отключены;
ssl_certificate /etc/nginx/ssl/live/my_domain.com/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/live/my_domain.com/privkey.pem;
ssl_dhparam /etc/nginx/dhparam/dhparam-2048.pem;
ssl_buffer_size 8k;
ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
ssl_prefer_server_ciphers включен;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
add_header X-Frame-Options «SAMEORIGIN» всегда;
add_header X-XSS-Защита "1; режим = блок" всегда;
add_header X-Content-Type-Options «нюхать» всегда;
add_header Referrer-Policy «без реферера при понижении» всегда;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" всегда;
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# включайте строгую транспортную безопасность, только если вы понимаете последствия
место расположения / {
try_files $uri $uri/ /index.php$is_args$args;
proxy_pass http://wordpress_host:80;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http://wordpress_host:80 https://my_domain.com/;
proxy_cookie_domain http://wordpress_host:80 my_domain.com;
proxy_set_header X-Forwarded-Proto https;
}
расположение ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
proxy_pass http://wordpress_host:80;
fastcgi_index index.php;
включить fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http://wordpress_host:80 https://my_domain.com/;
proxy_cookie_domain http://wordpress_host:80 my_domain.com;
proxy_set_header X-Forwarded-Proto https;
}
местоположение ~ /\.ht {
отрицать все;
}
местоположение = /favicon.ico {
log_not_found выключен; доступ_лог выключен;
}
местоположение = /robots.txt {
log_not_found выключен; доступ_лог выключен; позволять все;
}
расположение ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
истекает макс.;
log_not_found выключен;
}
}
Я также настраиваю в wp-config.php:
определить('FORCE_SSL_ADMIN', правда);
если ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='включено';
определить('WP_SITEURL', 'https://www.my_domain.com/');
определить('WP_HOME', 'https://www.my_domain.com/');