ฉันตั้งค่าไซต์ wordpress ที่ทำงานบน nginx ที่เชื่อมต่อเรียบร้อยแล้ว เมื่อเว็บไซต์ wordpress เปิดใช้งาน ฉันสามารถไปที่หน้าแรก: https://my_domain.com
หรือลิงค์ใด ๆ หรือในภายหลัง wp-admin/...
โดยไม่มีปัญหาใดๆ
แต่เมื่อฉันไปที่ https://my_domain.com/sample-page
หรือ https://my_domain.com/post-id
หรือเส้นทางใด ๆ ยกเว้นภายหลัง \wp-ผู้ดูแลระบบ
จากนั้น:
เปลี่ยนเส้นทางไปยังโดเมนรูททันที http://my_domain.com
ถ้าฉันตั้งค่า:
try_files $uri $uri/ /index.php$is_args$args;
หรืออย่าเปลี่ยนเส้นทางอัตโนมัติไปยังโดเมนรูท แต่กลับ 500 ข้อผิดพลาดภายในเซิร์ฟเวอร์
ถ้าฉันตั้งค่า (เพิ่ม a /
หลังจาก index.php):
try_files $uri $uri/ /index.php/$is_args$args;
โดยมีเส้นทางยกเว้น /wp-admin/
เมื่อเข้าถึงเปลี่ยนเส้นทางอย่างถูกต้องไปที่ https://my_domain.com/wp-admin/login.php
หากไม่ได้เข้าสู่ระบบและเพื่อ https://my_domain.com/wp-admin/
หากเข้าสู่ระบบ ใน try_files ทั้ง 2 กรณีข้างต้น
นี่คือการกำหนดค่า nginx ของฉันที่ /nginx/default.conf:
เซิร์ฟเวอร์ {
ฟัง 80;
ฟัง [::]:80;
ชื่อเซิร์ฟเวอร์ my_domain.com www.my_domain.com;
ที่ตั้ง / {
ส่งคืน 301 https://my_domain.com$request_uri;
}
}
เซิร์ฟเวอร์ {
ฟัง 443 ssl http2;
ฟัง [::]:443 ssl http2;
ชื่อเซิร์ฟเวอร์ my_domain.com www.my_domain.com;
ดัชนี index.php index.html index.htm;
รูท /var/www/html/wordpress;
เปิด 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 โฮสต์ $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
ตำแหน่ง ~ \.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 โฮสต์ $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
ตำแหน่ง ~ /\.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/');
อัปเดต:
ที่นี่นักเทียบท่าเขียนไฟล์:
รุ่น: '3';
บริการ:
จิงซ์:
รูปภาพ: nginx:stable-alpine
พอร์ต:
- "80:80" # nginx ฟัง 80
- "443:443"
ปริมาณ:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./wordpress/app:/var/www/html/wordpress
ฐานข้อมูล:
รูป: mysql:8.0
container_name: ตัวอย่างฐานข้อมูล
รีสตาร์ท: เว้นแต่จะหยุด
env_file: ./wordpress/app/.env
สิ่งแวดล้อม:
- MYSQL_DATABASE=ตัวอย่าง
ปริมาณ:
- ./wordpress/dbdata:/var/lib/mysql
#- ./wordpress/db/db.sql:/docker-entrypoint-initdb.d/install_wordpress.sql # หากคุณมี db.sql ของอินพุตโครงการที่นี่
คำสั่ง: '--default-authentication-plugin=mysql_native_password'
wordpress_host:
ขึ้นอยู่กับ:
- ฐานข้อมูล
ภาพ:เวิร์ดเพรส
ชื่อคอนเทนเนอร์: wordpress_host
พอร์ต:
- "8080:80"
รีสตาร์ท: เว้นแต่จะหยุด
env_file: ./wordpress/app/.env
สิ่งแวดล้อม:
- WORDPRESS_DB_HOST=db:3306
- WORDPRESS_DB_USER=ราก
- WORDPRESS_DB_PASSWORD=ราก
- WORDPRESS_DB_NAME=ตัวอย่าง
ปริมาณ:
- ./wordpress/app:/var/www/html/wordpress
ปริมาณ:
เวิร์ดเพรสโฮสต์:
ฐานข้อมูล
:
ไฟล์ .env:
MYSQL_ROOT_PASSWORD=ราก
MYSQL_USER=ตัวอย่าง
MYSQL_PASSWORD=รหัสผ่าน