You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

翻转含Laravel子应用的PHP应用目录结构并更新Nginx配置

目录结构调整后的Nginx配置更新方案

我来帮你梳理下目录调整后Nginx配置的更新思路和具体方案,适配你的新目录结构:

首先咱们明确核心需求:

  • 大部分常规请求要走Laravel的新/public根目录,遵循Laravel的单入口路由规则
  • 原遗留代码的请求(比如/directory1开头的路径)要转发到/legacy目录下的对应文件

具体Nginx配置示例

你可以根据实际域名、路径、PHP版本调整以下配置:

server {
    listen 80;
    server_name your-domain.com; # 替换为你的实际域名

    # 默认根目录指向Laravel的新public目录
    root /path/to/your/project-root/public;
    index index.php index.html index.htm;

    # 处理遗留代码请求:优先匹配原遗留路径,路由到legacy目录
    location ^~ /directory1 {
        root /path/to/your/project-root/legacy;
        try_files $uri $uri/ /directory1/script1.php?$query_string;

        # 遗留PHP脚本的执行规则
        location ~ \.php$ {
            fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 替换为你的PHP-FPM套接字路径
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }

    # Laravel常规请求路由:非静态文件请求转发到index.php
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    # Laravel的PHP执行规则
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; # 替换为你的PHP-FPM套接字路径
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 静态文件缓存优化(可选)
    location ~* \.(css|js|png|jpg|jpeg|gif|ico|svg)$ {
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

关键配置说明

  • 根目录优先级:默认根目录设为Laravel的/public,确保大部分请求走Laravel
  • 遗留路径匹配:location ^~ /directory1用^~标记高优先级,避免和Laravel的正则路由冲突,自动将请求映射到/legacy/directory1下的文件
  • PHP处理隔离:分别为遗留代码和Laravel配置PHP-FPM规则,确保两类脚本都能正常执行
  • Laravel单入口:location /里的try_files规则,确保所有非静态文件请求都转发到Laravel的index.php,符合框架路由逻辑

额外注意事项

  1. 替换配置中的/path/to/your/project-root为你的实际项目根目录路径
  2. 根据你的PHP版本调整PHP-FPM套接字路径(比如php7.4-fpm.sock或php8.1-fpm.sock)
  3. 若有多个遗留目录,可复制location ^~ /directory1块,修改路径为其他遗留目录即可
  4. 配置修改后,执行nginx -t检查语法正确性,再重启Nginx生效

内容的提问来源于stack exchange,提问作者Jeff Lambert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:29:42