Tôi đã thiết lập thành công một trang wordpress chạy trên nginx dockerized. Khi trang wordpress hoạt động, tôi có thể vào trang chủ: https://my_domain.com
hoặc bất kỳ liên kết hoặc tại wp-admin/...
(sau khi đăng nhập tại /wp-login.php
có thể truy cập) mà không gặp vấn đề gì.
Nhưng khi tôi đi đến https://my_domain.com/sample-page
hoặc https://my_domain.com/post-id
hoặc /wp-admin
(nếu chưa đăng nhập) nó ngay lập tức chuyển hướng đến proxy_pass http://wordpress_host:80
(được đặt trong tệp cấu hình nginx) không thể đúng, nên https://my_domain.com/post-id
trong trình duyệt của khách hàng.
trình duyệt của khách hàng sai url
với tuyến đường /wp-admin/
trước khi đăng nhập, nếu tôi thêm index.php
đến /wp-admin/index.php
nó hoạt động trong khi không có nó thì không
Đây là cấu hình nginx của tôi:
người phục vụ {
nghe 80;
nghe [::]:80;
server_name my_domain.com www.my_domain.com;
địa điểm / {
trả về 301 https://my_domain.com$request_uri;
}
}
người phục vụ {
nghe 443 ssl http2;
server_name my_domain.com www.my_domain.com;
ssl trên;
server_tokens tắt;
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;
bật ssl_prefer_server_ciphers;
ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;
add_header X-Frame-Options luôn luôn "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block" luôn luôn;
add_header X-Content-Type-Options "nosniff" luôn;
add_header Chính sách người giới thiệu luôn "không có người giới thiệu khi hạ cấp";
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" luôn;
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" luôn;
# chỉ kích hoạt bảo mật vận chuyển nghiêm ngặt nếu bạn hiểu ý nghĩa
địa điểm / {
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;
}
vị trí ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
proxy_pass http://wordpress_host:80;
fastcgi_index index.php;
bao gồm 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;
}
vị trí ~ /\.ht {
Phủ nhận tất cả;
}
vị trí = /favicon.ico {
log_not_found tắt; truy cập_đăng xuất;
}
vị trí = /robots.txt {
log_not_found tắt; truy cập_đăng xuất; chấp nhận tất cả;
}
vị trí ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
hết hạn tối đa;
log_not_found tắt;
}
}
Mình cũng config tại wp-config.php:
xác định ('FORCE_SSL_ADMIN', đúng);
nếu ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='bật';
xác định ('WP_SITEURL', 'https://www.my_domain.com/');
xác định ('WP_HOME', 'https://www.my_domain.com/');