Docker+NGINX环境下WordPress编辑器内容被拦截问题求助
WordPress编辑器内容被拦截问题排查与解决
环境配置详情
- WordPress和MySQL运行在Docker容器中
- 使用NGINX作为Web服务器,配置Certbot实现SSL支持
配置概述
- Docker Compose包含MySQL、WordPress和NGINX三个服务
- NGINX配置了SSL证书,以及PHP请求的FastCGI转发规则
相关配置代码
Docker Compose配置(docker-compose.yml)
version : '3' services: db: image: mysql:8.0 container_name: wordpress_db restart: unless-stopped env_file: .env environment: - MYSQL_DATABASE=wordpress volumes: - rn_dbdata:/var/lib/mysql command: '--default-authentication-plugin=mysql_native_password' networks: - rn-network wordpress: depends_on: - db build: context: . dockerfile: Dockerfile.wordpress args: WC_GZD_ENCRYPTION_KEY: ${WC_GZD_ENCRYPTION_KEY} container_name: wordpress restart: unless-stopped env_file: .env environment: - WORDPRESS_DB_HOST=db:3306 - WORDPRESS_DB_USER=${MYSQL_USER} - WORDPRESS_DB_PASSWORD=${MYSQL_PASSWORD} - WORDPRESS_DB_NAME=wordpress volumes: - rn_wordpress:/var/www/html networks: - rn-network webserver: depends_on: - wordpress image: nginx:1.27.2-alpine container_name: webserver restart: unless-stopped ports: - "80:80" - "443:443" volumes: - rn_wordpress:/var/www/html - ./nginx-conf:/etc/nginx/conf.d - certbot-etc:/etc/letsencrypt networks: - rn-network
NGINX配置
server { listen 80; listen [::]:80; server_name retronexus.io www.retronexus.io; location ~ /.well-known/acme-challenge { allow all; root /var/www/html; } location / { rewrite ^ https://$host$request_uri? permanent; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name retronexus.io www.retronexus.io; client_max_body_size 64M; index index.php index.html; root /var/www/html; ssl_certificate /etc/letsencrypt/live/retronexus.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/retronexus.io/privkey.pem; location ~ \.php$ { fastcgi_pass wordpress:9000; include fastcgi_params; } }
已执行的排查步骤
- 确认SSL证书配置正确
- 检查NGINX日志,未发现编辑器内容拦截相关的特定错误
- 确认/var/www/html目录权限允许NGINX和WordPress容器访问
问题
当前WordPress编辑器内内容被拦截,显示提示:"This content is blocked. Contact the site owner to fix the issue."
请问是否是NGINX配置错误导致该问题?是否需要特定配置避免?求排查建议或补充配置方案。
解决方案与排查建议
1. NGINX配置修正
你的NGINX配置缺少静态资源处理规则和FastCGI关键参数,这会导致WordPress编辑器(尤其是Gutenberg)加载异常或内容被拦截。修改443端口的server块配置如下:
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name retronexus.io www.retronexus.io; client_max_body_size 64M; index index.php index.html; root /var/www/html; ssl_certificate /etc/letsencrypt/live/retronexus.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/retronexus.io/privkey.pem; # 处理静态资源,直接返回,避免转发到PHP location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 30d; add_header Cache-Control "public, immutable"; } # PHP请求处理,补充必要的FastCGI参数 location ~ \.php$ { fastcgi_pass wordpress:9000; include fastcgi_params; # 必须设置SCRIPT_FILENAME参数,否则PHP无法正确识别请求文件 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; } # 通用请求转发到index.php,支持WordPress的固定链接 location / { try_files $uri $uri/ /index.php?$args; } }
2. 额外排查建议
- 检查WordPress站点URL设置:登录后台进入「设置」→「常规」,确认「WordPress地址(URL)」和「站点地址(URL)」均为
https://retronexus.io(或对应带www的域名),避免HTTP/HTTPS混合导致资源拦截。 - 禁用插件测试:临时禁用所有WordPress插件,尤其是安全类插件(如Wordfence、iThemes Security),排查是否是插件防火墙规则拦截了编辑器请求。
- 查看浏览器控制台错误:打开浏览器开发者工具(F12),切换到「控制台」标签页,查看是否有JS加载失败、CORS错误或404请求,定位具体拦截原因。
- 验证Docker网络连通性:在NGINX容器内执行
curl wordpress:9000,确认能正常连通WordPress容器的PHP-FPM服务;同时检查WordPress容器内的PHP-FPM日志(通常为/var/log/php-fpm.log),查看请求处理错误。
内容的提问来源于stack exchange,提问作者retronexus
相关产品推荐
相关产品推荐

