跳到主要内容

PHP Nginx 配置

介绍

Nginx 是一个高性能的 Web 服务器,广泛用于托管 PHP 应用程序。与 Apache 不同,Nginx 本身并不直接处理 PHP 代码,而是通过 FastCGI 协议与 PHP 处理器(如 PHP-FPM)通信。本文将指导你如何在 Nginx 上配置 PHP,以便你的 PHP 应用程序能够正常运行。

前置条件

在开始之前,请确保你已经安装了以下软件:

  • Nginx
  • PHP(包括 PHP-FPM)
  • 一个文本编辑器(如 vimnano

配置步骤

1. 安装 PHP-FPM

PHP-FPM(FastCGI Process Manager)是 PHP 的一个 FastCGI 实现,用于处理 PHP 请求。首先,确保你已经安装了 PHP-FPM:

bash
sudo apt-get install php-fpm

安装完成后,PHP-FPM 服务会自动启动。你可以通过以下命令检查其状态:

bash
sudo systemctl status php-fpm

2. 配置 Nginx 以使用 PHP-FPM

接下来,我们需要配置 Nginx 以将 PHP 请求转发给 PHP-FPM。打开 Nginx 的配置文件(通常位于 /etc/nginx/sites-available/default),并添加以下内容:

nginx
server {
listen 80;
server_name example.com;

root /var/www/html;
index index.php index.html index.htm;

location / {
try_files $uri $uri/ =404;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

location ~ /\.ht {
deny all;
}
}
备注

确保 fastcgi_pass 的值与你的 PHP-FPM 套接字路径匹配。你可以通过以下命令找到 PHP-FPM 的套接字路径:

bash
sudo find / -name "php*.sock"

3. 测试 Nginx 配置

在保存配置文件后,使用以下命令测试 Nginx 配置是否正确:

bash
sudo nginx -t

如果配置正确,你会看到类似以下的输出:

bash
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

4. 重启 Nginx

测试通过后,重启 Nginx 以应用更改:

bash
sudo systemctl restart nginx

5. 创建测试 PHP 文件

为了验证配置是否成功,创建一个简单的 PHP 文件(如 info.php)在 Web 根目录下:

bash
sudo nano /var/www/html/info.php

在文件中添加以下内容:

php
<?php
phpinfo();
?>

保存并关闭文件。

6. 访问测试文件

在浏览器中访问 http://example.com/info.php,你应该会看到 PHP 信息页面。这表明 Nginx 已成功配置为处理 PHP 请求。

实际案例

假设你正在开发一个简单的博客系统,使用 PHP 和 MySQL。你希望将博客部署在 Nginx 服务器上。以下是一个典型的 Nginx 配置示例:

nginx
server {
listen 80;
server_name blog.example.com;

root /var/www/blog;
index index.php index.html index.htm;

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

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\.ht {
deny all;
}
}

在这个配置中,所有请求都会被重写到 index.php,这是许多 PHP 框架(如 Laravel)的常见做法。

总结

通过本文,你已经学会了如何在 Nginx 上配置 PHP,以便高效地运行 PHP 应用程序。我们涵盖了从安装 PHP-FPM 到配置 Nginx 的所有步骤,并通过一个实际案例展示了如何将这一配置应用于真实的项目中。

附加资源

练习

  1. 尝试在不同的服务器上配置 Nginx 和 PHP,并比较性能差异。
  2. 使用不同的 PHP 版本(如 PHP 8.0)进行配置,并观察兼容性问题。
  3. 配置 Nginx 以支持 HTTPS,并测试 PHP 应用程序的安全性。

希望这些内容对你的学习有所帮助!如果你有任何问题,欢迎在评论区留言。