文章目录
一、前言
本文已收录于PHP全栈系列专栏:PHP面试专区。-
计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列
,欢迎大家提前关注锁定。
Nginx 和 PHP-FPM 是用于构建 Web 应用程序的流行工具。这两个工具经常一起使用,因为它们都与处理 Web 请求有关,并且可以通过配置文件进行自定义。
在这篇文章中,我们将介绍如何配置 Nginx 和 PHP-FPM 来设置一个完整的 Web 服务器。我们将探讨以下内容:
- 安装和配置 Nginx
- 安装和配置 PHP-FPM
- 配置 Nginx 和 PHP-FPM 之间的连接
- 最佳实践和进一步的资源
二、操作指南
2.1 安装和配置 Nginx
要安装 Nginx,在命令行中运行以下命令:
sudo apt-get update
sudo apt-get install nginx
安装完成后,需要对 Nginx 进行配置。默认情况下,Nginx 的配置文件位于 /etc/nginx 目录下。最重要的文件是 nginx.conf。您可以通过编辑此文件来定制您的 Nginx 布局。以下是一个基本的 Nginx 配置示例:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
}
http {
sendfile on;
upstream php-fpm {
server unix:/var/run/php/php7.4-fpm.sock;
}
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm;
server_name example.com;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass php-fpm;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
在此配置示例中,我们指定了服务器的用户和工作进程数,以及用于处理并发连接数的线程数。我们定义了服务器块,该块包含有关如何处理传入请求的详细信息。我们还定义了将使用的 PHP-FPM 后端。
请注意,我们的 Nginx 服务器将监听 TCP 端口 80,并使用默认的 /var/www/html 根目录。此外,我们定义了一个名为 example.com 的服务器名称。
2.2 安装和配置 PHP-FPM
安装 PHP-FPM 非常简单。在命令行中运行以下命令:
sudo apt-get install php-fpm
默认情况下,PHP-FPM 的主配置文件位于 /etc/php/7.4/fpm/php-fpm.conf 中。您可以通过编辑此文件来调整 PHP-FPM 的设置。例如,您可以更改 PHP-FPM 的监听端口或运行用户。
我们还需要编辑 /etc/php/7.4/fpm/pool.d/www.conf 文件,以确保 PHP-FPM 在正确的端口上监听请求。在文件中找到以下行:
listen = /run/php/php7.4-fpm.sock
并更改它为:
listen = 127.0.0.1:9000
这将使 PHP-FPM 在 TCP 端口 9000 上监听请求。
2.3 配置 Nginx 和 PHP-FPM 之间的连接
现在,我们需要告诉 Nginx 如何与 PHP-FPM 进行通信。我们可以通过 upstream 块实现这一点。在我们的示例配置中,我们使用以下行定义了 upstream:
upstream php-fpm {
server unix:/var/run/php/php7.4-fpm.sock;
}
此行告诉 Nginx,当它收到一个 PHP 请求时,它应该将其转发给 PHP-FPM 后端,并在 UNIX 套接字 /var/run/php/php7.4-fpm.sock 上监听响应。
请注意,如果您使用 TCP 监听端口而不是 UNIX 套接字,您需要使用以下代码:
upstream php-fpm {
# Replace with your server IP address and port
server 127.0.0.1:9000;
}
2.4 最佳实践和进一步的资源
我们已经介绍了如何配置 Nginx 和 PHP-FPM 来设置一个基本的 Web 服务器。但是,这只是一个开始。以下是一些最佳实践,您可以使用它们进行优化和保护您的 Web 应用程序:
- 安装 SSL 证书:使用 Let’s Encrypt 或其他 SSL 提供商来加密您的 Web 网站流量。
- 禁用不必要的 Nginx 模块:通过编辑 nginx.conf 文件来禁用不必要的 Nginx 模块。
- 配置防火墙:使用 ufw 或 iptables 配置防火墙,以保护您的服务器免受潜在攻击。
- 实时监控和日志记录:使用工具如 sysstat、htop、logrotate 等实时监控和日志记录并快速处理服务器问题。
此外,如果您需要进一步学习 Nginx 和 PHP-FPM 的配置,请查看以下资源:
总结
总之,Nginx 和 PHP-FPM 是构建高性能 Web 应用程序的强大工具。通过正确地配置它们,您可以获得一个稳定、可靠和安全的 Web 服务器。