Мне нужно докер инстансами, где находится мой WordPress Installation, который состоит из контейнеров NGINX, PHP7.1 (PHP-FPM), MariaDD и Memcache. Они подключаются к контейнеру NGINX, который отправляет трафик во внешний мир.
Все работает найти по HTTP. Когда я переключился на HTTPS, я столкнулся с несколькими проблемами. Я решил некоторые из них, и мне кажется, у меня осталась одна проблема — невозможность загрузки в файлы JS / CSS.
Вот моя конфигурация Nginx на моем контейнере WordPress
server {
listen 0.0.0.0:80;
error_log /var/log/nginx/localhost.error.log;
access_log /var/log/nginx/localhost.access.log;
root /app/web;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_index index.php;
include fastcgi_params;
}
}
Вот мой Nginx Config на моем контейнере Nginx (тот, который выполняет reverse_proxy)
server {
listen 443 ssl http2;
listen [::]:433 ssl http2;
server_name www.example.com;
ssl_certificate /etc/nginx/certs/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/live/www.example.com/privkey.pem;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
sendfile off;
error_log /dev/stdout info;
access_log /dev/stdout;
location / {
proxy_pass http://example-wordpress;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header SSL_PROTOCOL $ssl_protocol;
proxy_set_header SSL_CLIENT_CERT $ssl_client_cert;
proxy_set_header SSL_CLIENT_VERIFY $ssl_client_verify;
proxy_set_header SSL_SERVER_S_DN $ssl_client_s_dn;
}
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
expires 5d;
}
# deny access to . files, for security
#
location ~ /\. {
log_not_found off;
deny all;
}location ^~ /.well-known {
allow all;
auth_basic off;
}
}
Вот что я сделал на своем wp-config.php
if (
(!empty( $_SERVER['HTTP_X_FORWARDED_HOST'])) ||
(!empty( $_SERVER['HTTP_X_FORWARDED_FOR'])) )
{
$_SERVER['HTTPS'] = 'on';
}
Этой конфигурации удается исправить петлю перенаправления, когда я перехожу на сторону администратора. Но он не загружает некоторые файлы CSS и JS.
Когда я проверяю ссылку, она направляет меня на страницу 404. Я развернул свой локальный экземпляр на своей машине, чтобы посмотреть, были ли ссылки каким-либо образом изменены. Но, сравнивая их, вы видите тот же минус домена.
https://www.example.com/app/themes/theme-v1.2/build/main.bundle.js?ver=1.0.0
http://www.example.local/app/themes/theme-v1.2/build/main.bundle.js?ver=1.0.0
Я потратил целый день на выяснение этого, но, похоже, я не знаю, что еще нужно сделать, чтобы сделать эту последнюю часть. Я надеюсь, что кто-то здесь может помочь мне, так как это похоже на проблему с nginx.
Я бы также включил это ссылка на сайт так как это помогло мне решить проблему с перенаправлением.
proxy_pass
перенаправить мой трафик с www.domain.com
на мой экземпляр nginx моего контейнера WordPress.Задача ещё не решена.
Других решений пока нет …