使用 Nginx 和 PHP-FPM 配置 Laravel 应用

DDD
发布: 2025-09-30 15:50:11
原创
891人浏览过

使用 nginx 和 php-fpm 配置 laravel 应用

本文旨在指导开发者如何在 Nginx 环境下,通过 PHP-FPM 正确配置 Laravel 应用,使其能够解析 PHP 文件。文章将详细介绍配置 Nginx 的关键步骤,并提供示例代码,帮助开发者解决在 Nginx 中部署 Laravel 应用时遇到的 PHP 文件解析问题,确保应用能够正常运行。

在使用 Nginx 部署 Laravel 应用时,一个常见的需求是将特定路径(例如 /api)指向 Laravel 应用,而保持其他路径指向其他服务(例如 React 应用)。 当配置不正确时,可能会出现 Nginx 无法正确解析 PHP 文件,导致在浏览器中直接显示 PHP 代码而不是执行结果。以下是如何解决此问题的详细步骤。

确保已安装 PHP-FPM

PHP-FPM(FastCGI Process Manager)是用于处理 PHP 请求的进程管理器。 确保你的服务器上已经安装了 PHP-FPM,并且版本与你的 Laravel 应用兼容。你可以使用以下命令安装 PHP-FPM,具体版本号根据你的 PHP 版本进行调整:

sudo apt-get update
sudo apt-get install php8.1-fpm  # 示例:安装 PHP 8.1 的 PHP-FPM
登录后复制

安装完成后,启动 PHP-FPM 服务:

立即学习PHP免费学习笔记(深入)”;

sudo systemctl start php8.1-fpm  # 示例:启动 PHP 8.1 的 PHP-FPM
sudo systemctl enable php8.1-fpm # 设置开机自启
登录后复制

配置 Nginx

接下来,需要配置 Nginx 以将特定路径的请求转发到 PHP-FPM。编辑 Nginx 的配置文件(通常位于 /etc/nginx/sites-available/ 目录下),找到与你的 Laravel 应用相关的 server 块。

假设你希望将 /api 路径指向 Laravel 应用,以下是一个示例配置:

AppMall应用商店
AppMall应用商店

AI应用商店,提供即时交付、按需付费的人工智能应用服务

AppMall应用商店 56
查看详情 AppMall应用商店
server {
    listen 80;
    server_name domain.com;
    root /var/www/app; # React 应用的根目录

    index index.html;

    location /api {
        alias /var/www/api/public/; # Laravel 应用的 public 目录
        try_files $uri $uri/ /api/index.php?$query_string;

        location ~ \.php$ {
            #root /var/www/api/public; # 注释掉,因为已经在 location /api 中定义了 alias

            include snippets/fastcgi-php.conf; # 包含 PHP-FPM 的通用配置
            fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 指定 PHP-FPM 的 socket 文件路径
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
    }

    location / {
        # React 应用的配置
        try_files $uri $uri/ =404;
    }
}
登录后复制

配置详解:

  • location /api: 定义了处理 /api 路径的规则。
    • alias /var/www/api/public/:指定 Laravel 应用的 public 目录为 /api 的根目录。
    • try_files $uri $uri/ /api/index.php?$query_string;:尝试查找请求的 URI 作为文件或目录。如果找不到,则将请求重定向到 Laravel 的入口文件 index.php,并传递查询字符串。
  • location ~ \.php$: 定义了处理 PHP 文件的规则。
    • include snippets/fastcgi-php.conf;:包含 Nginx 提供的 PHP-FPM 通用配置,其中包含一些常用的 fastcgi_param 设置。
    • fastcgi_pass unix:/run/php/php8.1-fpm.sock;:指定 PHP-FPM 的 socket 文件路径。请根据你的 PHP-FPM 版本和配置进行调整。可以使用 ps aux | grep php-fpm 查找 socket 文件路径。
    • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;:设置 SCRIPT_FILENAME 参数,告诉 PHP-FPM 要执行的 PHP 文件路径。 $document_root 是 Nginx 的根目录,$fastcgi_script_name 是请求的 PHP 文件名。
  • location /: 定义了处理根目录的规则,此处配置为React应用。

注意事项:

  • 确保 fastcgi_pass 指向正确的 PHP-FPM socket 文件路径。
  • 根据你的 PHP 版本调整 PHP-FPM 的配置和 socket 文件路径。
  • 检查文件和目录权限,确保 Nginx 和 PHP-FPM 进程有权访问 Laravel 应用的文件。

重启 Nginx 和 PHP-FPM

完成配置后,保存文件并重启 Nginx 和 PHP-FPM 服务:

sudo nginx -t # 测试配置是否正确
sudo systemctl restart nginx
sudo systemctl restart php8.1-fpm # 示例:重启 PHP 8.1 的 PHP-FPM
登录后复制

测试配置

现在,你可以通过访问 domain.com/api 来测试 Laravel 应用是否能够正确解析 PHP 文件。 如果一切配置正确,你应该能够看到 Laravel 应用的页面。

总结

通过以上步骤,你应该能够成功配置 Nginx 和 PHP-FPM,使 Laravel 应用能够正确解析 PHP 文件,并与其他服务(例如 React 应用)共存。 请务必根据你的实际环境和 PHP 版本调整配置,并确保文件和目录权限正确。

以上就是使用 Nginx 和 PHP-FPM 配置 Laravel 应用的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

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

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号