当前位置:  操作系统/服务器>linux

nginx php-fpm环境中chroot功能的配置使用方法

    来源: 互联网  发布时间:2014-08-25

    本文导语:  nginx+php-fpm是现在配置php环境非常流行的组合之一。nginx以其并发能力强,轻巧,速度快而受到非常多人的青睐,php-fpm以其安全,处理php速度快而成为与nginx的最佳组合。php-fpm提供有一个非常重要的功能chroot,它可以把指定的网...

nginx+php-fpm是现在配置php环境非常流行的组合之一。nginx以其并发能力强,轻巧,速度快而受到非常多人的青睐,php-fpm以其安全,处理php速度快而成为与nginx的最佳组合。php-fpm提供有一个非常重要的功能chroot,它可以把指定的网站完完全全限制在一个目录下,可以对系统和其它虚拟机起到很好的隔离效果,这对系统的安全无疑是加强了不少,下面介绍如何配置。

我们假设域名为www.,网站根目录为/home/chroot/www./web,需要把此网站限制在/home/chroot/www.。

一、php-fpm.conf配置

打开php-fpm.conf文件,把chroot更改为chroot = /home/chroot/www.

二、nginx配置

我们上面把www.站点限制在了/home/chroot/www.,所以对于php-fpm,此网站根目录已经变成是/web,所以我们需要更改nginx传递给php-fpm的网站根目录地址。
找到fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;,更改为fastcgi_param SCRIPT_FILENAME /web$fastcgi_script_name;

三、一些目录创建

代码如下:
cd /home/chroot/www./
mkdir -p tmp etc bin usr/sbin lib dev/
mknod -m 0666 dev/null c 1 3
mknod -m 0666 dev/random c 1 8
mknod -m 0666 dev/urandom c 1 9
mknod -m 0666 dev/zero c 1 5
chmod 1777 tmp

四、修复解析

把www.的php完全限制在一个目录下后,导致了php无法解析域名,以32位系统为例(64位库文件位置为lib64)下面是修复的步骤,

代码如下:
cd /home/chroot/www./
cp /etc/hosts /etc/resolv.conf /etc/nsswitch.conf etc/
cp /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libnss_dns.so.2,libnss_files.so.2,libresolv.so.2,libtermcap.so.2}  lib/

这样php就可以解析域名了。

五、修复sendmail功能

同样chroot目录后,就无法发送邮件了,我们这里使用mini_sendmail代为发送邮件。同样以32位系统为例。

代码如下:

cd /home/chroot/www./
cp -P /bin/bash /bin/sh bin
cp /etc/passwd /etc/group etc
cd /tmp
wget http://www.acme.com/software/mini_sendmail/mini_sendmail-1.3.6.tar.gz
tar xzf mini_sendmail-1.3.6.tar.gz
cd mini_sendmail-1.3.6
make
cp mini_sendmail /home/chroot/www./usr/sbin/sendmail


六、与禁用函数相比,Chroot有什么优点呢?

  禁用函数是针对整个PHP程序而言的,所有需要通过PHP程序进行解析的文件,都会受到禁用函数的设置。网站程序不同,那么有可能需要的函数不同,不同的虚拟主机无法单独设置。而Chroot可以根据不同的虚拟主机,进行特异化设置。对于需要使用特殊函数的程序,可以关闭Chroot,来保证网站程序的正常运转;程序不需要调用特殊的程序,就可以开启Chroot模式;如果只是要启用一个或两个特定的程序,你可以仿照如下的过程添加函数。比如说,当我们开启Chroot时,PHP程序是无法使用sendmail()函数来发信的,我们可以使用mini_sendmail替代sendmail来修复发信。

代码如下:

cd /home/wwwroot/www.ixiqin.com/
cp -P /bin/bash /bin/sh bin
cp /etc/passwd /etc/group etc
cd /tmp
wget http://centos.googlecode.com/files/mini_sendmail-1.3.6.tar.gz
tar xzf mini_sendmail-1.3.6.tar.gz
cd mini_sendmail-1.3.6
make
cp mini_sendmail /home/wwwroot/www.ixiqin.com/usr/sbin/sendmail

以上代码,在/tmp目录下编译mini_sendmail,然后将生成的可执行文件复制到chroot后目录下相应位置,以保证发件系统的正常运行。

七、有什么需要注意的呢?

Tips One:Chroot模式下,各种探针,如雅黑探针将会失效,报错。

Tips Two:Chroot模式可用做在线shell模拟器,安全真实。

综合以上分析,我建议,与其使用死板的禁用函数,我们为什么不试试更加好用的Chroot。


    
 
 

您可能感兴趣的文章:

  • Nginx跨域使用字体文件的配置方法
  • nginx中使用lua脚本的方法
  • nginx add_header指令使用方法
  • 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
  • 修改配置真正解决php文件上传大小限制问题(nginx+php)
  • linux下怎么配置nginx + tomcat 和 apache + php运行两个网站的环境?
  • linux/centos源码安装nginx编译配置选项参数介绍
  • nginx使用IPV6的相关配置项介绍
  • nginx服务器下通过fastcgi支持php5详细安装配置步骤
  • PHP+FastCGI+Nginx配置PHP运行环境
  • nginx中用JSON格式记录日志的配置示例
  • nginx status状态页配置方法和中文说明
  • nginx关闭favicon.ico、robots.txt日志记录配置
  • nginx中文件下载指定保存文件名的配置方法
  • nginx支持codeigniter的pathinfo模式url重写配置写法示例
  • ngin配置301重定向设置方法和nginx子目录301重定向
  • 在nginx中配置pathinfo模式支持thinkphp的URL重写
  • Linux下Nginx安全证书ssl配置方法
  • Nginx中禁止使用IP访问网站的配置实例
  • nginx将泛解析的匹配域名绑定到子目录配置方法
  • Nginx隐藏index.php和Pathinfo模式配置例子
  • 网络技术 iis7站长之家
  • 在网关中使用Nginx配置HTTP透明代理案例
  • nginx中域名、目录的301重定向配置示例
  • nginx配置gzip压缩页面
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • nginx加php-fpm出现502 bad gateway错误的5种解决方法
  • nginx调用php-fpm出错解决方法和nginx配置详解
  • nginx 服务器介绍
  • 实时 Nginx 分析和诊断工具 nginx-systemtap-toolkit
  • nginx Windows版相关问题及使用说明
  • Nginx的TFS模块 nginx-tfs
  • nginx最新主线开发版1.5.4发布及下载地址
  • 重启或杀掉Nginx进程后丢失nginx.pid的解决办法
  • nginx最新稳定版1.4.2发布
  • Nginx 令牌模块 nginx-token
  • nginx服务器基本特性及使用技巧
  • Nginx文件上传模块 nginx-upload-module
  • linux/centos下安装nginx(rpm安装和源码安装)详细步骤
  • Nginx 负载均衡模块 nginx-upstream-fair
  • linux/centos安装nginx常见错误及解决办法
  • 懂nginx,帮下忙,使用nginx实现大并发
  • NGINX的流媒体插件 nginx-rtmp-module
  • nginx安装(1) ttlsa教程系列之nginx
  • 重启nginx后丢失nginx.pid的解决方法
  • nginx中使用nginx-http-concat模块合并静态资源文件
  • nginx 截取编译参数
  • linux下为nginx添加jvmroute模块的方法
  • websockify-nginx-module


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3