ฉันตั้งค่าไซต์ wordpress ที่ทำงานบน nginx ที่เชื่อมต่อเรียบร้อยแล้ว เมื่อเว็บไซต์ wordpress เปิดใช้งาน ฉันสามารถไปที่หน้าแรก: https://my_domain.com
หรือลิงค์ใดๆหรือที่ wp-admin/...
(หลังจากล็อกอินที่ /wp-login.php
ที่สามารถเข้าถึงได้) โดยไม่มีปัญหาใดๆ
แต่เมื่อฉันไปที่ https://my_domain.com/sample-page
หรือ https://my_domain.com/post-id
หรือ /wp-ผู้ดูแลระบบ
(หากไม่ได้ล็อกอิน) มันจะเปลี่ยนเส้นทางไปที่ proxy_pass ทันที http://wordpress_host:80
(ตั้งค่าในไฟล์ config nginx) ซึ่งไม่ถูกต้อง ควรเป็น https://my_domain.com/post-id
ในเบราว์เซอร์ของลูกค้า
เบราว์เซอร์ของลูกค้า URL ไม่ถูกต้อง
ด้วยเส้นทาง /wp-admin/
ก่อนเข้าสู่ระบบ ถ้าฉันต่อท้าย index.php
ถึง /wp-admin/index.php
มันทำงานได้ในขณะที่ไม่มีมันไม่ได้
นี่คือการกำหนดค่า nginx ของฉัน:
เซิร์ฟเวอร์ {
ฟัง 80;
ฟัง [::]:80;
ชื่อเซิร์ฟเวอร์ my_domain.com www.my_domain.com;
ที่ตั้ง / {
ส่งคืน 301 https://my_domain.com$request_uri;
}
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl http2;
ชื่อเซิร์ฟเวอร์ my_domain.com www.my_domain.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-Protection "1; mode=block" เสมอ;
add_header X-Content-Type-Options "nosniff" เสมอ;
add_header Referrer-Policy "no-referrer-when-downgrade" เสมอ;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" เสมอ;
# add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" เสมอ;
# เปิดใช้งานการรักษาความปลอดภัยการขนส่งที่เข้มงวดเฉพาะเมื่อคุณเข้าใจความหมาย
ที่ตั้ง / {
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-ส่งต่อ-สำหรับ $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-ส่งต่อโปรโต 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-ส่งต่อ-สำหรับ $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-ส่งต่อโปรโต https;
}
ตำแหน่ง ~ /\.ht {
ปฏิเสธทั้งหมด
}
สถานที่ = /favicon.ico {
ปิด log_not_found; access_log off;
}
ตำแหน่ง = /robots.txt {
ปิด log_not_found; access_log off; อนุญาตทั้งหมด
}
ตำแหน่ง ~* \.(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/');