欢迎来到 ChatBBS! 这里是 ChatBBS 的社区,在这里可以获得很多关于 ChatBBS的资讯!玩得开心~

兰空 Lsky 部署网站出现 500 错误❌解决办法(Nginx 配置踩坑记录)

likeweixue V1 新手 发布于 2026-10-26 06:58 8 浏览 0 回复 0 赞 教学分享
分享 教程
首先呢是 php 的版本问题,版本是 php80,81,82 这三个版本可以安装,83 以上是安装不了的。
第二种情况是 ng 配置问题
默认是
server {
   listen 80 ;
   server_name img.example.com;
   index index.php index.html index.htm default.php default.htm default.html;
   access_log /www/sites/img.example.com/log/access.log main;
   error_log /www/sites/img.example.com/log/error.log;

   location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
       return 404;
   }
   location ^~ /.well-known/acme-challenge {
       allow all;
       root /usr/share/nginx/html;
   }
   if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
       return 403;
   }

   error_page 404 /404.html;
   root /www/sites/img.example.com/index/public;

   location ~ [^/]\.php(/|$) {
       fastcgi_pass 127.0.0.1:9000;
       include fastcgi-php.conf;
       include fastcgi_params;
       set $real_script_name $fastcgi_script_name;
       if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$" ) {
           set $real_script_name $1;
           set $path_info $2;
       }
       fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;
       fastcgi_param SCRIPT_NAME $real_script_name;
       fastcgi_param PATH_INFO $path_info;
   }
}

要插入这一段

location / {
   try_files $uri $uri/ /index.php?$query_string;
}

完整代码如下

server {
   listen 80;
   server_name img.example.com;
   index index.php index.html;

   access_log /www/sites/img.example.com/log/access.log main;
   error_log  /www/sites/img.example.com/log/error.log;

   # 站点根目录必须指向 Laravel 的 public 子目录
   root /www/sites/img.example.com/index/public;

   # 拒绝访问敏感文件
   location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md) {
       return 404;
   }

   # ACME 证书验证(1Panel 默认模板自带,可保留)
   location ^~ /.well-known/acme-challenge {
       allow all;
       root /usr/share/nginx/html;
   }

   # ★ 关键:所有非物理文件请求转给 index.php,交给 Laravel 路由处理
   location / {
       try_files $uri $uri/ /index.php?$query_string;
   }

   # PHP-FPM 处理
   # 端口必须指向运行兰空所要求的 PHP 版本(8.0 ~ 8.2)的容器
   # 用 `docker ps | grep php` 查看实际映射,例如 127.0.0.1:9004->9000 则填 9004
   location ~ [^/]\.php(/|$) {
       fastcgi_pass 127.0.0.1:9004;
       include fastcgi-php.conf;
       include fastcgi_params;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   }
}

注意‼️

1,上面的 img.example.com 请换成你自己的域名。
2,fastcgi_pass 127.0.0.1:9004 是 1Panel 给某个 PHP 容器分配的特定端口,不同机器不同,务必用 docker ps | grep php 确认后替换。
3,/www/sites/... 是 1Panel Nginx 容器内的路径,如果你不是用 1Panel(比如裸机装 Nginx),按自己的实际路径写。
4,生产环境请把 .env 中 APP_DEBUG 设为 false、APP_ENV 设为 production,装好后执行一次 php artisan config:clear。
5,.env 里的 APP_KEY、DB_PASSWORD 属于敏感信息,写文档时不要贴真实值。


更多操作
请 登录 后参与讨论。