当前位置:web 服务器 > Nginx >>

Nginx下多网站单独php-fpm进程目录权限防跨站

Nginx下开多个虚拟机网站防跨站是首要的任务,PHP5.3之前的版本不支持open_basedir,只能通过控制PHP-cgi进程及目录用户权限进行限制,防止跨站访问。


先了解一下网站正常运行所用到的用户、目录权限:
Nginx进程运行用户:接收用户请求,处理静态文件,如果是PHP则转给PHP-CGI处理,网站目录拥有读权限。
PHP-cgi进程用户:处理PHP文件,网站目录拥有读权限,个别目录需要写入权限。

让每个网站使用单独的PHP-CGI进程,创建PHP-FPM配置文件,修改以下:


1
2
3
4
5
<value name="pid_file">/usr/local/php/logs/php-fpm.pid</value> 
<value name="error_log">/usr/local/php/logs/php-fpm.log</value> 
<value name="listen_address">/tmp/www.zhaoxi.org.sock</value> 
<value name="user">www.zhaoxi.net</value> 
#PHP-CGI运行用户组 
<value name="group">www.zhaoxi.org</value>


启动PHP-CGI进程:
1
/usr/local/php/bin/php-cgi --fpm --fpm-config /usr/local/php/etc/www.zhaoxi.org.conf

设置网站目录权限,设Nginx运行用户为www:


1
2
3
chown -R www.zhaoxi.org:www /home/wwwroot/www.zhaoxi.org 
chmod -R 550 /home/wwwroot/www.zhaoxi.org 
chmod 701 /home/wwwroot/


再修改Nginx网站配置文件,解析PHP所使用的PHP-CGI进程:


1
2
3
4
5
6
location ~ .*\.(php|php5)?$
{
fastcgi_pass  unix:/tmp/www.zhaoxi.org.sock;
fastcgi_index index.php;
include fcgi.conf;
}

php-cgi进程简单管理脚本:

php-cgi进程简单管理脚本:
#! /bin/sh
# chkconfig: 2345 55 25
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

Apache
IIS
Nginx
Tomcat
如果你遇到web 服务器难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,