Ubuntu20.4下Nginx+PHP7.4部署WordPress出现PHP下载及重定向失败问题
问题原因及修复方案
1. PHP文件被下载无法执行的问题
根本原因
你的Nginx配置中缺少.php后缀请求的处理规则,Nginx没有将PHP请求转发给启动的php7.4-fpm服务解析,直接将PHP源码作为静态文件返回给浏览器,浏览器无法识别该文件类型就会触发application/octet-stream下载。
修复步骤
- 打开
/etc/nginx/sites-available/default配置文件,在第二个server块(对应server_name example.com的配置块)中新增以下PHP处理规则,放在location /块的后面:
location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; }
- 验证PHP-FPM套接字路径:执行
ls /run/php/命令查看是否存在php7.4-fpm.sock文件,如果实际路径不同,需要将上述配置中fastcgi_pass的路径替换为实际套接字路径。 - 可选优化:你现有配置中
location /块的try_files参数可以简化为try_files $uri $uri/ /index.php$is_args$args;,因为已经配置了root为/home/me/wp1/,不需要写绝对路径,避免后续修改root路径时出现配置不一致问题。 - 执行
nginx -t验证Nginx配置语法是否正确,确认无报错后执行systemctl reload nginx重载配置即可生效。
2. www前缀域名无法重定向到无前缀域名的问题
排查修复顺序
- 首先确认域名解析配置:
www.example.com和example.com都需要解析到当前服务器的公网IP,缺少任意一条解析都会导致访问失败或者不触发跳转。 - 确认Nginx配置已正确加载:执行
nginx -T命令查看实际加载的所有配置,确认你编写的www重定向server块已经被加载,没有被其他同端口、同server_name的配置覆盖。 - 清除浏览器缓存测试:301永久重定向会被浏览器长期缓存,修改配置后可以用浏览器无痕模式访问测试,避免旧缓存影响验证结果。
- 也可以使用curl命令直接验证重定向规则是否生效,规避缓存干扰:
curl -I http://www.example.com
正常返回结果第一行是HTTP/1.1 301 Moved Permanently,同时存在Location: http://example.com/xxx响应头,即说明重定向规则本身已经生效。
内容的提问来源于stack exchange,提问作者ar2015
相关产品推荐
相关产品推荐

