在 Ubuntu 上安全配置 PHP-FPM 的步骤如下:
安装 PHP-FPM: 在终端中运行以下命令以安装 PHP-FPM:
sudo apt-get update
sudo apt-get install php-fpm
配置 PHP-FPM:
PHP-FPM 的配置文件位于 /etc/php/{version}/fpm/pool.d/www.conf
,其中 {version}
是您安装的 PHP 版本。例如,如果您安装的是 PHP 7.4,则配置文件路径为 /etc/php/7.4/fpm/pool.d/www.conf
。
使用文本编辑器打开配置文件,例如:
sudo nano /etc/php/7.4/fpm/pool.d/www.conf
在配置文件中,您可以设置以下选项以提高安全性:
listen.owner
和 listen.group
:将这两个选项设置为非 root 用户和组,以限制对 PHP-FPM 套接字的访问。例如:
listen.owner = www-data
listen.group = www-data
listen.mode
:将此选项设置为 0660
,以便只有 owner 和 group 可以访问 PHP-FPM 套接字。
listen.mode = 0660
user
和 group
:将这两个选项设置为非 root 用户和组,以限制 PHP-FPM 进程的权限。例如:
user = www-data
group = www-data
clear_env
:将此选项设置为 no
,以防止 PHP-FPM 进程继承不必要的环境变量。
clear_env = no
security.limit_extensions
:此选项允许您限制 PHP-FPM 处理的文件扩展名。这可以防止潜在的恶意文件上传。例如,仅允许处理 PHP 和 HTML 文件:
security.limit_extensions = .php .html
保存并关闭配置文件。
重启 PHP-FPM: 为了使更改生效,请重启 PHP-FPM 服务:
sudo systemctl restart php{version}-fpm
将 {version}
替换为您安装的 PHP 版本,例如:php7.4-fpm
。
配置 Nginx 或 Apache: 根据您使用的 Web 服务器(Nginx 或 Apache),您需要相应地配置它以使用 PHP-FPM。确保将 FastCGI 参数指向正确的 PHP-FPM 套接字,并限制对套接字的访问。
对于 Nginx,您可以在 /etc/nginx/sites-available/{your-site}
文件中添加以下配置:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php{version}-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
将 {your-site}
替换为您的站点名称,将 {version}
替换为您安装的 PHP 版本。
对于 Apache,您需要在 /etc/apache2/sites-available/{your-site}.conf
文件中添加以下配置:
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php{version}-fpm.sock|fcgi://localhost"
</FilesMatch>
将 {your-site}
替换为您的站点名称,将 {version}
替换为您安装的 PHP 版本。
保存并关闭配置文件。对于 Nginx,运行 sudo nginx -t
以检查配置文件的语法,然后运行 sudo systemctl restart nginx
重启 Nginx。对于 Apache,运行 sudo systemctl restart apache2
重启 Apache。
现在,您已经在 Ubuntu 上安全地配置了 PHP-FPM。请确保定期更新您的系统和软件包,以保持安全性。