Nginx反向代理配置异常:主站转localhost:3000,/blog路径WordPress报404
Nginx反向代理配置问题解决方案及备选CMS推荐
一、解决/blog路径404的Nginx配置调整
常见错误原因及修复方案
访问https://example.com/blog出现404,核心问题通常是Nginx路径映射错误或WordPress站点URL配置不匹配,以下是针对性的正确配置示例及说明:
1. 正确的Nginx配置示例
假设WordPress文件部署在服务器的/var/www/wordpress目录,使用php-fpm处理PHP请求(默认端口9000),配置如下:
server { listen 443 ssl; server_name example.com; # SSL证书配置(请替换为你的证书路径) ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.pem; # 主站反向代理到localhost:3000 location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } # /blog路径路由到WordPress location /blog/ { root /var/www; # 关键:WordPress放在/var/www/wordpress,root设为上级目录,使/blog对应到wordpress目录 index index.php index.html index.htm; # 处理WordPress固定链接(非默认 permalink 需添加) if (!-e $request_filename) { rewrite ^/blog/(.*)$ /blog/index.php?$1 last; } # PHP请求转发到php-fpm location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_param HTTP_HOST $host; fastcgi_param REQUEST_URI $request_uri; } # 静态文件缓存优化 location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 30d; access_log off; } } }
2. 关键配置说明
- 路径映射修正:若将
location /blog/的root设为/var/www/wordpress,Nginx会尝试在/var/www/wordpress/blog下查找文件,导致404。设置root /var/www后,/blog/xxx会对应到/var/www/wordpress/xxx,匹配WordPress的实际文件位置。 - 固定链接重写:如果WordPress使用自定义固定链接(如文章名格式),必须添加
rewrite规则,否则Nginx无法将动态请求转发到index.php处理。 - WordPress后台配置:登录WordPress后台,进入「设置-常规」,将「WordPress地址(URL)」和「站点地址(URL)」均设为
https://example.com/blog,确保生成的资源路径和跳转链接正确。
二、备选CMS推荐
若上述配置仍无法满足需求,可考虑以下适合博客场景的CMS:
- Ghost:轻量级博客专用CMS,基于Node.js开发,界面简洁,专注内容创作,部署和维护成本低,性能优异。
- Hugo:静态站点生成器,无需数据库,编译生成纯静态HTML文件,访问速度极快,适合不需要频繁动态更新内容的博客。
- Drupal:功能全面的企业级CMS,支持复杂内容结构和扩展插件,适合需要搭建包含博客的综合性站点。
- Joomla:平衡易用性与扩展性的CMS,内置博客模块,适合中小型站点,学习曲线比Drupal平缓。
内容的提问来源于stack exchange,提问作者fp007
相关产品推荐
相关产品推荐

