Docker 服务启动报 “Start request repeated too quickly” 的排查记录
一次在 CentOS 上 Docker 怎么都起不来的经历,记录从看日志、查配置到解决 SELinux 与网桥冲突的完整过程。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-08-05 13:15:38 Nginx PHP-FPM 用户权限 CentOS
多站点跑在一台机器上,如果所有PHP进程都共用一个用户,某个站点出现漏洞被写shell,可能顺手就把其他站点的源码改了。隔离一下还是必要的。
这篇文章记录下在CentOS上用Nginx和PHP-FPM给每个站点配置独立的用户和组,让它们各跑各的。
要改动的地方其实就三处:系统用户和组、PHP-FPM的池配置、网站目录权限。
Nginx那边基本不用动它的运行用户,只要在虚拟主机里指定对应池子的socket就行。
涉及的配置文件,主配置在/etc/nginx/nginx.conf,里面user指令一般就默认nginx。PHP-FPM的全局配置是/etc/php-fpm.conf,不过我们主要动/etc/php-fpm.d/下面的站点池文件,每个站点一个.conf。
假设有两个站点,sitea和siteb,先创建各自的系统用户和组,不允许登录,不建家目录:
groupadd www-sitea
useradd -g www-sitea -s /sbin/nologin -M www-sitea
groupadd www-siteb
useradd -g www-siteb -s /sbin/nologin -M www-siteb
然后是PHP-FPM池配置,比如sitea的池文件/etc/php-fpm.d/sitea.conf:
[sitea]
user = www-sitea
group = www-sitea
listen = /var/run/php-fpm/sitea.sock
listen.owner = www-sitea
listen.group = www-sitea
listen.mode = 0660
siteb类似。这里listen.owner和listen.group指定socket文件的所有者,配合mode 0660,让同组的用户才能读写。Nginx一般是以nginx用户跑的,如果它不在www-sitea组里,按理说访问不到socket,但很多环境会把nginx用户加到各个站点的组里,或者使用0666。这里先按0660配,线上如果遇到Nginx连不上socket,后面常见问题会说到。
Nginx虚拟主机配置,在/etc/nginx/conf.d/sitea.conf里面,大致这样:
server {
listen 80;
server_name sitea.example.com;
root /var/www/sitea;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/run/php-fpm/sitea.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
对应的站点目录权限得跟上:
chown -R www-sitea:www-sitea /var/www/sitea
chmod -R 750 /var/www/sitea
750意味着属主和属组有读写执行,其他用户无权限,PHP-FPM进程以www-sitea用户跑起来才能读写目录。
配置都写好之后,重启php-fpm和nginx:
systemctl restart php-fpm
systemctl restart nginx
验证这一套配得对不对,可以在站点根目录放个info.php,里面写:
<?php
phpinfo();
?>
通过浏览器访问,看环境信息里Server API是否为FPM/FastCGI,以及显示的用户名是不是www-sitea,对上了就没问题。再用ps aux | grep php-fpm能看到master进程和按池起的worker进程,用户列正是www-sitea或www-siteb;nginx worker还是以nginx用户跑,不受影响。
常见问题里,出现502 Bad Gateway最常见的两个原因,一个是PHP-FPM进程没权限读网站目录,另一个是socket文件权限不对。如果目录属主或权限没设对,PHP进程无法执行脚本,直接502,可以先去php-fpm的错误日志里看一眼。
如果Nginx日志里报连接socket被拒绝或权限拒绝,检查下socket文件本身权限,ls -l /var/run/php-fpm/sitea.sock,看属主和模式是不是660,属主组是否与listen.owner/listen.group一致。就算配对了,SELinux在Enforcing模式下也可能会拦,可以临时setenforce 0看看是不是它搞的鬼。确认是SELinux的话,可以调整上下文或者到/etc/selinux/config里永久改disabled。关掉不总是好习惯,但确实省事,线下环境我一般先关了再说。
这样一来,两个站点的PHP进程就各自隔离了,某个站点出问题不会轻易影响到其他站点代码。跑久了会发现,权限隔离这种小事,线上稳得很。
一次在 CentOS 上 Docker 怎么都起不来的经历,记录从看日志、查配置到解决 SELinux 与网桥冲突的完整过程。
本文深度分析了SSL/TLS证书在Apache、Nginx和IIS服务器上的安装配置方法,探讨了其在“互联网+”时代的重要性,并推荐了lcjmSSL作为证书获取的可靠来源。
Nginx配置SSL证书实现HTTPS访问的全流程,包括证书获取方式、核心配置参数、服务重载方法及验证测试手段。通过配置ssl_protocols和ssl_ciphers等关键参数,可有效提升通信安全性。特别强调了HTTP到HTTPS的重定向配置和常见问题处理方案,如证书路径错误和端口冲突的解决方法。该方案适用于生产环境和测试环境,能有效保障Web服务的数据传输安全。
Nginx部署SSL证书需完成证书准备、配置修改、服务验证三阶段。核心步骤包括证书链合并、安全协议配置、HTTP强制跳转及服务重载。关键技术点涉及SSL模块验证、加密套件选择和防火墙配置。通过系统化的证书管理、严格的协议限制和自动化跳转机制,可实现网站从HTTP到HTTPS的安全升级。建议定期更新证书并优化加密参数,以应对不断演变的安全威胁。
在Linux服务器上部署SSL证书的全流程,包括证书准备、端口开放、Web服务器配置及验证等关键步骤。通过Nginx和Apache两种主流服务器的配置示例,展示了如何启用HTTPS加密通信。文中还提供了证书自动续期、常见问题处理等实用技巧,帮助管理员高效完成证书部署与管理。遵循指南,可显著提升Web服务的安全性,避免数据泄露风险。