nginx php 防止跨站,Nginx下多网站单独php-fpm进程目录权限防跨站
Nginx下開多個虛擬機網站防跨站是首要的任務,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
總結
以上是生活随笔為你收集整理的nginx php 防止跨站,Nginx下多网站单独php-fpm进程目录权限防跨站的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ES迁mysql_使用kafka连接器迁
- 下一篇: 非阻塞 php,PHP异步非阻塞之路