nginx php-fpm環(huán)境中chroot功能的配置使用方法
nginx+php-fpm是現(xiàn)在配置php環(huán)境非常流行的組合之一。nginx以其并發(fā)能力強(qiáng),輕巧,速度快而受到非常多人的青睞,php-fpm以其安全,處理php速度快而成為與nginx的最佳組合。php-fpm提供有一個(gè)非常重要的功能chroot,它可以把指定的網(wǎng)站完完全全限制在一個(gè)目錄下,可以對(duì)系統(tǒng)和其它虛擬機(jī)起到很好的隔離效果,這對(duì)系統(tǒng)的安全無(wú)疑是加強(qiáng)了不少,下面介紹如何配置。
我們假設(shè)域名為www.dhdzp.com,網(wǎng)站根目錄為/home/chroot/www.dhdzp.com/web,需要把此網(wǎng)站限制在/home/chroot/www.dhdzp.com。
一、php-fpm.conf配置
打開php-fpm.conf文件,把chroot更改為chroot = /home/chroot/www.dhdzp.com
二、nginx配置
我們上面把www.dhdzp.com站點(diǎn)限制在了/home/chroot/www.dhdzp.com,所以對(duì)于php-fpm,此網(wǎng)站根目錄已經(jīng)變成是/web,所以我們需要更改nginx傳遞給php-fpm的網(wǎng)站根目錄地址。
找到fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;,更改為fastcgi_param SCRIPT_FILENAME /web$fastcgi_script_name;
三、一些目錄創(chuàng)建
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
四、修復(fù)解析
把www.dhdzp.com的php完全限制在一個(gè)目錄下后,導(dǎo)致了php無(wú)法解析域名,以32位系統(tǒng)為例(64位庫(kù)文件位置為lib64)下面是修復(fù)的步驟,
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就可以解析域名了。
五、修復(fù)sendmail功能
同樣chroot目錄后,就無(wú)法發(fā)送郵件了,我們這里使用mini_sendmail代為發(fā)送郵件。同樣以32位系統(tǒng)為例。
cd /home/chroot/www.dhdzp.com/
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.dhdzp.com/usr/sbin/sendmail
六、與禁用函數(shù)相比,Chroot有什么優(yōu)點(diǎn)呢?
禁用函數(shù)是針對(duì)整個(gè)PHP程序而言的,所有需要通過PHP程序進(jìn)行解析的文件,都會(huì)受到禁用函數(shù)的設(shè)置。網(wǎng)站程序不同,那么有可能需要的函數(shù)不同,不同的虛擬主機(jī)無(wú)法單獨(dú)設(shè)置。而Chroot可以根據(jù)不同的虛擬主機(jī),進(jìn)行特異化設(shè)置。對(duì)于需要使用特殊函數(shù)的程序,可以關(guān)閉Chroot,來保證網(wǎng)站程序的正常運(yùn)轉(zhuǎn);程序不需要調(diào)用特殊的程序,就可以開啟Chroot模式;如果只是要啟用一個(gè)或兩個(gè)特定的程序,你可以仿照如下的過程添加函數(shù)。比如說,當(dāng)我們開啟Chroot時(shí),PHP程序是無(wú)法使用sendmail()函數(shù)來發(fā)信的,我們可以使用mini_sendmail替代sendmail來修復(fù)發(fā)信。
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,然后將生成的可執(zhí)行文件復(fù)制到chroot后目錄下相應(yīng)位置,以保證發(fā)件系統(tǒng)的正常運(yùn)行。
七、有什么需要注意的呢?
Tips One:Chroot模式下,各種探針,如雅黑探針將會(huì)失效,報(bào)錯(cuò)。
Tips Two:Chroot模式可用做在線shell模擬器,安全真實(shí)。
綜合以上分析,我建議,與其使用死板的禁用函數(shù),我們?yōu)槭裁床辉囋嚫雍糜玫腃hroot。
- 使用PHPStorm+XDebug搭建單步調(diào)試環(huán)境
- Mac OSX下使用MAMP安裝配置PHP開發(fā)環(huán)境
- 使用WAMP搭建PHP本地開發(fā)環(huán)境
- PHP使用pear實(shí)現(xiàn)mail發(fā)送功能 windows環(huán)境下配置pear
- Mac系統(tǒng)下使用brew搭建PHP(LNMP/LAMP)開發(fā)環(huán)境
- mac環(huán)境中使用brew安裝php5.5.15
- CentOS 5.5使用yum來安裝LAMP(php運(yùn)行環(huán)境)
- 如何在PHP環(huán)境中使用ProtoBuf數(shù)據(jù)格式
相關(guān)文章
nginx部署https網(wǎng)站的實(shí)現(xiàn)步驟(親測(cè))
本文詳細(xì)介紹了使用Nginx在保持與http服務(wù)兼容的情況下部署HTTPS,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
Nginx+Windows搭建域名訪問環(huán)境的操作方法
這篇文章主要介紹了Nginx搭建域名訪問環(huán)境,包括nginx配置文件的相關(guān)介紹及對(duì)nginx配置文件的分析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-03-03
nginx location中多個(gè)if里面proxy_pass的方法
這篇文章主要介紹了nginx location中多個(gè)if里面proxy_pass的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Nginx負(fù)載均衡/SSL配置的實(shí)現(xiàn)
這篇文章主要介紹了Nginx負(fù)載均衡/SSL配置的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
修改配置解決Nginx服務(wù)器中常見的上傳與連接錯(cuò)誤
這篇文章主要介紹了修改配置解決Nginx服務(wù)器中常見的上傳與連接錯(cuò)誤的方法,分別針對(duì)Nginx的413錯(cuò)誤與111錯(cuò)誤,需要的朋友可以參考下2016-01-01

