nginx php 防止跨站 多网站单独php
- 作者: 多梦笔记
- 时间: 2026年02月16日 23:59
多个虚拟机网站防跨站是首要的任务,PHP5.3之前的版本不支持open_basedir,只能通过控制PHP-cgi进程及目录用户权限进行限制,防止跨站访问。
先了解一下网站正常运行所用到的用户、目录权限:
Nginx进程运行用户:接收用户请求,处理静态文件,如果是PHP则转给PHP-CGI处理,网站目录拥有读权限。
PHP-cgi进程用户:处理PHP文件,网站目录拥有读权限,个别目录需要写入权限。
让每个网站使用单独的PHP-CGI进程,创建PHP-FPM配置文件,修改以下:/usr/local/php/logs/php-fpm.pid
/usr/local/php/logs/php-fpm.log
/tmp/www.haiyun.me.sock
www.onovp.com #PHP-CGI运行用户组
www.haiyun.me
启动PHP-CGI进程:/usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/www.haiyun.me.conf
设置网站目录权限,设Nginx运行用户为www:chown -R www.haiyun.me:www /home/wwwroot/www.haiyun.me
chmod -R 550 /home/wwwroot/www.haiyun.me
chmod 701 /home/wwwroot/
再修改Nginx网站配置文件,解析PHP所使用的PHP-CGI进程:location ~ .*\.(php|php5)?$
{
fastcgi_pass unix:/tmp/www.haiyun.me.sock;
fastcgi_index index.php;
include fcgi.conf;
}
php-cgi进程简单管理脚本:#! /bin/sh
# chkconfig: 2345 55 25
#https://www.haiyun.me
cgi=/usr/local/php/bin/php-cgi
case "$1" in
start)
for conf in `ls /usr/local/php/etc/*.conf`
do
$cgi --fpm --fpm-config $conf
done
;;
stop)
for pid in `ls /usr/local/php/logs/*.pid`
do
kill -TERM `cat $pid`
done
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
相关文章
-
华为云服务器iptables中的自定义链
华为云服务器iptables中的自定义链
- 站长
- 2026年02月16日
-
使用自定义 OpenSSL 库编译 nginx
使用自定义 OpenSSL 库编译 nginx
- 站长
- 2026年02月16日
-
【抛砖引玉】LaySNS插件的使用与开发
【抛砖引玉】LaySNS插件的使用与开发
- 站长
- 2026年02月16日
-
启用了被称为 HTTP 严格传输安全(HSTS)的安全策略
启用了被称为 HTTP 严格传输安全(HSTS)的安全策略
- 站长
- 2026年02月16日
-
使用 COS 静态网站功能搭建前端单页应用
使用 COS 静态网站功能搭建前端单页应用
- 站长
- 2026年02月17日
-
MacOS AssetCache 占用网速原因以及解决办法
MacOS AssetCache 占用网速原因以及解决办法
- 站长
- 2026年02月17日
