### Nginx 调用 PHP-FPM 出错解决方法
当 Nginx 调用 PHP-FPM 时出现错误,通常可以通过以下几个步骤来排查和解决:
1. **检查 PHP-FPM 是否在运行**:
使用命令 `systemctl status php-fpm`(对于使用 systemd 的系统)或 `service php-fpm status`(对于较旧的系统)来检查 PHP-FPM 服务的状态。
2. **查看 Nginx 错误日志**:
错误日志通常可以提供关于为什么请求失败的详细信息。Nginx 的错误日志位置可能因安装和配置而异,但常见的位置是 `/var/log/nginx/error.log`。
3. **检查 Nginx 配置**:
确保 Nginx 配置文件中正确设置了 `fastcgi_pass` 指令,指向 PHP-FPM 的监听地址(通常是 `127.0.0.1:9000` 或 Unix socket)。
nginx location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
4. **检查 PHP-FPM 配置**:
确保 PHP-FPM 的 `listen` 指令与 Nginx 配置中的 `fastcgi_pass` 指令相匹配。同时,检查 PHP-FPM 的用户权限,确保它有权访问 Nginx 服务器的文件。
5. **查看 PHP-FPM 错误日志**:
PHP-FPM 的错误日志通常位于 `/var/log/php-fpm/error.log` 或 `/var/log/php7.x-fpm.log`(取决于 PHP 版本和安装)。检查这些日志以获取可能的错误消息。
6. **检查防火墙和安全组设置**:
如果 PHP-FPM 监听在除 localhost 之外的地址上,确保没有防火墙规则阻止 Nginx 访问该地址。
7. **重启服务**:
在修改配置后,重启 Nginx 和 PHP-FPM 以应用更改。
sudo systemctl restart nginx php-fpm
### Nginx 配置详解
Nginx 的配置主要通过其配置文件(通常是 `/etc/nginx/nginx.conf` 和 `/etc/nginx/sites-available/` 目录下的文件)进行。以下是一些常见的 Nginx 配置指令和它们的用途:
- **server**:定义一个虚拟服务器的配置。
- **listen**:指定服务器监听的端口和地址。
- **server_name**:定义服务器的名称,用于处理基于名称的虚拟主机。
- **location**:定义对特定请求 URI 的处理规则。
- **root**:设置请求的根目录。
- **index**:设置默认索引文件。
- **proxy_pass**:将请求转发到另一个服务器。
- **fastcgi_pass**:将请求转发给 FastCGI 服务器,如 PHP-FPM。
- **fastcgi_param**:设置传递给 FastCGI 服务器的参数。
Nginx 的配置非常灵活,支持复杂的请求处理和重定向规则。了解 Nginx 的配置文件结构和指令是优化 Web 服务器性能和可靠性的关键。