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 sau wp-admin/...
mà không có bất kỳ vấn đề.
Nhưng khi tôi đi đến https://my_domain.com/sample-page
hoặc https://my_domain.com/post-id
hoặc bất kỳ tuyến đường nào ngoại trừ sau \wp-quản trị viên
sau đó nó:
ngay lập tức chuyển hướng đến tên miền gốc http://my_domain.com
nếu tôi đặt:
try_files $uri $uri/ /index.php$is_args$args;
hoặc không tự động chuyển hướng đến tên miền gốc mà quay lại 500 Lỗi máy chủ nội bộ
nếu tôi đặt (thêm một /
sau index.php):
try_files $uri $uri/ /index.php/$is_args$args;
với tuyến đường ngoại lệ /wp-admin/
khi truy cập chuyển hướng chính xác đến https://my_domain.com/wp-admin/login.php
nếu chưa đăng nhập và để https://my_domain.com/wp-admin/
nếu đã đăng nhập, trong cả 2 trường hợp try_files ở trên.
Đây là cấu hình nginx của tôi tại /nginx/default.conf:
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;
nghe [::]:443 ssl http2;
server_name my_domain.com www.my_domain.com;
chỉ mục index.php index.html index.htm;
gốc/var/www/html/wordpress;
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 Máy chủ $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
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 Máy chủ $http_host;
proxy_set_header X-Forwarded-Proto $scheme;
}
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/');
Cập nhật:
Đây là tập tin soạn thảo docker:
phiên bản: '3';
dịch vụ:
nginx:
hình ảnh: nginx:ổn định-alpine
cổng:
- "80:80" # nginx nghe trên 80
- "443:443"
khối lượng:
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- ./wordpress/app:/var/www/html/wordpress
đb:
hình ảnh: mysql:8.0
container_name: ví dụ db
khởi động lại: trừ khi dừng
env_file: ./wordpress/app/.env
môi trường:
- MYSQL_DATABASE=ví dụ
khối lượng:
- ./wordpress/dbdata:/var/lib/mysql
#- ./wordpress/db/db.sql:/docker-entrypoint-initdb.d/install_wordpress.sql #nếu bạn có db.sql của dự án đầu vào ở đây
lệnh: '--default-authentication-plugin=mysql_native_password'
wordpress_host:
phụ thuộc:
- db
hình ảnh: wordpress
container_name: wordpress_host
cổng:
- "8080:80"
khởi động lại: trừ khi dừng
env_file: ./wordpress/app/.env
môi trường:
- WORDPRESS_DB_HOST=db:3306
- WORDPRESS_DB_USER=root
- WORDPRESS_DB_PASSWORD=gốc
- WORDPRESS_DB_NAME=ví dụ
khối lượng:
- ./wordpress/app:/var/www/html/wordpress
khối lượng:
máy chủ wordpress:
dbdata
:
tập tin .env:
MYSQL_ROOT_PASSWORD=gốc
MYSQL_USER=ví dụ
MYSQL_PASSWORD=mật khẩu