Skip to content

问题现象

在浏览器中输入域名访问系统时,没有渲染出网页,而是浏览器直接弹窗下载了一个名为 index.phpdownload 的文本文件。


根本原因

在标准的 Nginx Web 服务器工作流中:

  • 当请求到达 Nginx 后,若该请求没有命中任何反向代理规则(proxy_pass),也没有命中任何 PHP 解析器(如 FastCGI fastcgi_pass),Nginx 会将其视为普通静态文件。
  • 由于 Nginx 的 MIME 映射表将 .php 视为二进制数据流(application/octet-stream),Nginx 会向浏览器下发文件下载响应头(Content-Disposition),从而导致浏览器自动下载了 PHP 源码文件。

造成该现象的具体场景:

  1. 未配置反向代理:站点刚创建时选择了“纯静态”模式,但后续没有添加反向代理规则将请求转发给 Swoole。
  2. 反向代理规则未覆盖根路径 /:反向代理的 location 路径写错(例如写成了 location /api,导致根路径 / 依然走静态文件查找)。
  3. 宝塔面板反向代理被意外停用或清除

解决方案

检查并补全 Nginx 反向代理规则

打开站点 Nginx 配置文件,确保在 server 块内正确配置了代理到 Swoole 端口(默认 20697)的规则:

nginx
location / {
    proxy_pass http://127.0.0.1:20697;
    proxy_http_version 1.1;
    proxy_set_header Host $http_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;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Authori-zation $http_authori_zation;
}

重载 Nginx 服务

在终端中执行测试与重载命令:

bash
nginx -t && nginx -s reload

强制刷新浏览器

由于浏览器可能会缓存“下载文件”的响应行为,请按 Ctrl + F5(Mac 用户 Cmd + Shift + R)或清除浏览器缓存后再打开首页。

承信租多门店租赁商城系统官方文档