Yii框架 Nginx怎么配置_Yii框架服务器环境部署【详解】

小涛姑娘_4273

小涛姑娘_4273

2026-05-01

817人浏览

原创

nginx配置yii的核心是:一要location /中用try_files $uri $uri/ /index.php?$args兜住所有非静态请求,二要location ~ \.php$中显式设置fastcgi_param script_filename $document_root$fastcgi_script_name;,缺一则导致404或502。

yii框架 nginx怎么配置_yii框架服务器环境部署【详解】

直接说结论:Nginx 配置 Yii 的核心就两件事——try_files 把非静态请求兜给 index.php,fastcgi_param SCRIPT_FILENAME 必须写对路径;漏掉任一,404 或 502 就等着你。

location / 块里必须用 try_files $uri $uri/ /index.php?$args

这是 Yii 能跑起来的底线。Nginx 不会自动把 /site/login 这种路由交给 PHP 处理,它只认真实存在的文件或目录。这条规则的意思是:先查有没有对应文件($uri),再查有没有同名目录($uri/),都找不到就内部重写到 /index.php?$args,让 Yii 的 urlManager 接管。

常见错误现象:

  • 访问任何页面都返回 404,但 /index.php?r=site/login 能进 —— 说明 try_files 没生效或写错了位置
  • 访问 /assets/xxx.js 返回 404 —— 可能被后面的 location ~ \.php$ 拦截了,或者 root 指向不是 web/ 目录

实操建议:

  • root 必须指向项目 web/ 子目录,比如 root /var/www/myapp/web;,不是项目根目录
  • 别在 location / 里加 if (!-e $request_filename) —— 容易引发循环重定向或 404
  • 宝塔用户直接选「Laravel5」伪静态模板,它和 Yii 的 try_files 逻辑一致

fastcgi_param SCRIPT_FILENAME 路径必须拼对

PHP-FPM 启动后,Nginx 把请求转过去,但 FPM 不知道该执行哪个文件。如果 SCRIPT_FILENAME 拼出来是空的、错的,或者根本不存在,就会报 502 Bad Gateway 或 “No input file specified”。

关键点:

  • 必须显式写 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;,不能只靠 include fastcgi_params; —— 因为默认的 fastcgi_params 里不带这行
  • $document_root 的值来自 root 指令,所以 root 错了,这里一定错
  • Windows 下路径分隔符要用正斜杠 /,别用反斜杠 \,否则 PHP-FPM 找不到文件

示例片段:

Nginx Hosting
Nginx Hosting

通过服务器本地nginx实例实现零认证静态游戏托管。作为所有浏览器游戏的主要部署方式,无需登录、无需令牌、无需用户操作。

下载
location ~ \.php$ {
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_pass 127.0.0.1:9000;
    # 或 fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}

敏感目录和静态资源要分开处理

Yii 的 runtime/、config/、vendor/ 等目录绝对不能被 Web 直接访问,而 web/assets/ 下的 JS/CSS/图片又得缓存。这两类需求得用不同 location 块隔离。

容易踩的坑:

  • 没加 location ~ ^/assets/.*\.php$ { deny all; } —— 攻击者可能上传恶意 PHP 文件到 assets 并执行
  • 把 expires 加在 location / 里,结果连 /index.php 都被缓存了
  • 用 location ~ \.(js|css|png)$ 匹配 assets 时,忘了加 ^/assets/ 前缀,导致匹配到所有 JS/CSS 文件(包括后台接口返回的 JSON)

推荐写法:

location ^~ /assets/ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}
location ~ ^/(protected|runtime|config|vendor|nbproject) {
    deny all;
}
location ~ /\. {
    deny all;
}

改完配置一定要 nginx -t 再 nginx -s reload

很多问题其实不是配置逻辑错,而是语法错、路径错、少了个分号,或者 reload 没生效。Nginx 不像 Apache 会自动报错提示,它可能静默失败,继续用旧配置跑。

实操建议:

  • 每次改完 nginx.conf 或站点 conf,第一反应就是 nginx -t —— 它会检查语法+路径是否存在
  • 确认输出 nginx: configuration file /etc/nginx/nginx.conf test is successful 再 reload
  • 如果用了宝塔,点「重载配置」前,先去 SSH 执行一遍 nginx -t,避免面板假成功
  • 遇到 502,先看 error.log 里有没有 connect() failed (111: Connection refused) —— 那是 PHP-FPM 根本没起来,不是 Nginx 配置问题

最常被忽略的一点:root 指向的是 web/ 目录,但 runtime/ 和 web/assets/ 的写权限属于 www-data(Ubuntu)或 www(CentOS/宝塔),不是 root。权限不对,Yii 写日志、生成资源都会失败,且错误日志里不一定明说。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

yii nginx yii框架

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2692

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

916

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

809

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2456

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4532

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

727

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii Framework 2.0 API 官方文档
Yii Framework 2.0 API 官方文档

共0课时 | 0人学习

Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习