久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Nginx參考

 用勿龍潛 2011-12-27

Nginx參考

Nginx 簡介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Nginx 安裝,、調(diào)試 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Nginx 安裝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1. 安裝前注意事項(xiàng) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2. 安裝前資源的準(zhǔn)備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. 安裝 Nginx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4. 驗(yàn)證安裝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5. Nginx 的常用參數(shù)和控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6. 編寫管理 Nginx 的腳步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
7. 使用注意事項(xiàng) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Nginx 配置文件詳解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Nginx 中的全局變量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
通過例子學(xué)習(xí) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Nginx 監(jiān)控 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Nginx Rewrite 基礎(chǔ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Rewrite 基本標(biāo)記 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Rewrite 正則表達(dá)式匹配 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Rewrite 條件判斷 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Rewrite 應(yīng)用實(shí)例 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
偽地址 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
域名跳轉(zhuǎn) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
附錄 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Nginx 編譯模塊名稱解析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
 
 Nginx 簡介
Nginx 是俄羅斯人編寫的十分輕量級(jí)的 HTTP 服務(wù)器 ,Nginx ,它的發(fā)音為
“ engine X ” ,, 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,,同時(shí)也是一個(gè)
IMAP/POP3/SMTP 代理服務(wù)器. Nginx 是由俄羅斯人 Igor Sysoev 為俄羅斯訪問
量第二的 Rambler.ru 站點(diǎn)開發(fā)的,它已經(jīng)在該站點(diǎn)運(yùn)行超過兩年半了,。 Igor
Sysoev 在建立的項(xiàng)目時(shí) , 使用基于 BSD 許可,。
據(jù)說他當(dāng)初是 F5 的成員之一,英文主頁: http:// ,。
俄羅斯的一些大網(wǎng)站已經(jīng)使用它超過兩年多了 ,, 一直表現(xiàn)不凡 , 相信想了解
nginx 的朋友都讀過阿葉大哥的利用 nginx 實(shí)現(xiàn)負(fù)載均衡 . 直到 2007 年 4 月,, 俄
羅 斯大約有 20% 左右的虛擬主機(jī)是由 nignx 服務(wù)或代理的,。 Google 在線安全博
客中統(tǒng)計(jì) nginx 服務(wù)或代理了大約所有 Internet 虛擬主機(jī)的 4% 。而 netcraft
的統(tǒng)計(jì)顯示,, nginx 服務(wù)的主機(jī)在過去的一年里以四倍的速度增長短短的幾年
里,, 它的排名已躍進(jìn)第 9 。
( 參見: http://survey./Reports/200707/ )
Nginx 以事件驅(qū)動(dòng)的方式編寫,,所以有非常好的性能,,同時(shí)也是一個(gè)非常 高
效的反向代理、負(fù)載平衡,。其擁有匹配 Lighttpd 的性能,,同時(shí)還沒有 Lighttp d
的內(nèi)存泄漏問題,而且 Lighttpd 的 mod_proxy 也有一些問題并且很久沒有更新 ,。
Nginx 并不支持 cgi 方式運(yùn)行,,原因是可以減少因此帶來的一些程序上的 漏
洞。那么我們必須使用 FastCGI 方式來執(zhí)行 PHP 程序,。
現(xiàn)在,, Igor 將源代碼以類 BSD 許可證的形式發(fā)布。 Nginx 因?yàn)樗姆€(wěn)定性,、
豐富的模塊庫,、靈活的配置和低系統(tǒng)資源的消耗而聞名.業(yè)界一致認(rèn)為它是
Apache2.2 + mod_proxy_balancer 的輕量級(jí)代替者,不僅是因?yàn)轫憫?yīng)靜態(tài)頁面 的
速度非???,而且它的模塊數(shù)量達(dá)到 Apache 的近 2/3 。對(duì) proxy 和 rewrite 模
塊的支持很徹底,,還支持 mod_fcgi ,、 ssl ,、 vhosts ,適合用來做 mongrel clus ters
的前端 HTTP 響應(yīng),。
N ginx 做為 HTTP 服務(wù)器,,有以下幾項(xiàng)基本特性:
1. 處理靜態(tài)文件,索引文件以及自動(dòng)索引,;打開文件描述符緩沖 ,。
2. 無緩存的反向代理加速,簡單的負(fù)載均衡和容錯(cuò) ,。
3. FastCGI , 簡單的負(fù)載均衡和容錯(cuò) ,。
4. 模塊化的結(jié)構(gòu)。包括 gzipping, byte ranges, chunked responses 以及
SSI-filter 等 filter ,。如果由 FastCGI 或其它代理服務(wù)器處理單頁中 存
在的多個(gè) SSI , 則這項(xiàng)處理可以并行運(yùn)行,,而不需要相互等待。
5. 支持 SSL 和 TLSSNI . ,。
Nginx 專為性能優(yōu)化而開發(fā),,性能是其最重要的考量 , 實(shí)現(xiàn)上非常注重效率 。
它支持內(nèi)核 Poll 模型,,能經(jīng)受高負(fù)載的考驗(yàn) , 有報(bào)告表明能支持高達(dá) 50,000 個(gè)
并發(fā)連接數(shù),。
Nginx 具有很高的穩(wěn)定性。其它 HTTP 服務(wù)器,,當(dāng)遇到訪問的峰值,,或者有
人惡意發(fā)起慢速連接時(shí),也很可能會(huì)導(dǎo)致服務(wù)器物理內(nèi)存耗盡頻繁交換,,失去 響
應(yīng),,只能重啟服務(wù)器。例如當(dāng)前 apache 一旦上到 200 個(gè)以上進(jìn)程,, web 響應(yīng)速 度
就明顯非常緩慢了,。而 Nginx 采取了分階段資源分配技術(shù),使得它的 CPU 與內(nèi) 存
占用率非常低,。 nginx 官方表示保持 10,000 個(gè)沒有活動(dòng)的連接,,它只占 2.5M 內(nèi) 存 ,
所以類似 DOS 這樣的攻擊對(duì) nginx 來說基本上是毫無用處的,。就穩(wěn)定性而
言 ,nginx 比 lighthttpd 更勝一籌,。
Nginx 支持熱部署。它的啟動(dòng)特別容易 , 并且?guī)缀蹩梢宰龅?7*24 不間斷運(yùn)
行,,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng),。你還能夠在不間斷服務(wù)的情況下,對(duì) 軟
件版本進(jìn)行進(jìn)行升級(jí)。
Nginx 采用 master-slave 模型 , 能夠充分利用 SMP 的優(yōu)勢,,且能夠減少工 作
進(jìn)程在磁盤 I/O 的阻塞延遲,。當(dāng)采用 select()/poll() 調(diào)用時(shí),還可以限制每 個(gè)
進(jìn)程的連接數(shù),。
Nginx 代碼質(zhì)量非常高,,代碼很規(guī)范,手法成熟,,模塊擴(kuò)展也很容易,。特 別
值得一提的是強(qiáng)大的 Upstream 與 Filter 鏈。 Upstream 為諸如 reverse proxy ,
與其他服務(wù)器通信模塊的編寫奠定了很好的基礎(chǔ),。而 Filter 鏈最酷的部分就是
各個(gè) filter 不必等待前一個(gè) filter 執(zhí)行完畢,。它可以把前一個(gè) filter 的輸出
做為當(dāng)前 filter 的輸入,這有點(diǎn)像 Unix 的管線,。這意味著,,一個(gè)模塊可以開 始
壓縮從后端服務(wù)器發(fā)送過來的請(qǐng)求,且可以在模塊接收完后端服務(wù)器的整個(gè)請(qǐng) 求
之前把壓縮流轉(zhuǎn)向客戶端,。
Nginx 采用了一些 OS 提供的最新特性如對(duì) sendfile (Linux2.2+) ,, accept -
filter (FreeBSD4.1+) , TCP_DEFER_ACCEPT (Linux 2.4+) 的支持,,從而大大提
高了性能,。
當(dāng)然,, nginx 還很年輕,,多多少少存在一些問題,比如: Nginx 是俄羅斯人
創(chuàng)建,,目前文檔方面還不是很完善.因?yàn)槲臋n大多是俄語,,所以文檔方面這也 是
個(gè)障礙.盡管 nignx 的模塊比較多,但它們還不夠完善,。對(duì)腳本的支持力度不 夠 ,。
這些問題, nginx 的作者和社區(qū)都在努力解決,,我們有理由相信 nginx 將 繼
續(xù)以高速的增長率來分享輕量級(jí) HTTP 服務(wù)器市場,,會(huì)有一個(gè)更美好的未來。
 
Nginx 安裝,、調(diào)試
Nginx 安裝
1. 1. 1. 1. 安裝前注意事項(xiàng)
1 ) 目前官方 Nginx 并不支持 Windows ,,您只能在包括 Linux 、 UNIX ,、 BS D
系統(tǒng)下安裝和使用,;
2 ) Nginx 本身只是一個(gè) HTTP 和反向代理服務(wù)器,它無法像 Apache 一樣
通過安裝各種模塊來支持不同的頁面腳本,例如 PHP ,、 CGI 等,。
3 )為了確保能在 Nginx 中使用正則表達(dá)式進(jìn)行更靈活的配置,安裝之前 需
要確定系統(tǒng)是否安裝有 PCRE ( Perl Compatible Regular Expressions )包 ,。
4) 需要安裝在 2.6 以上內(nèi)核版本的 GNU/Linux 系統(tǒng)中,。
5) 編譯前,請(qǐng)先確認(rèn) gcc ,、 make ,、 patch 等編譯工具是否已安裝,并可正常
使用,。
2. 2. 2. 2. 安裝前資源的準(zhǔn)備
主要軟件清單列表:
1 ) Nginx 安裝文件
Nginx 0.6.32 nginx-0.6.32.tar.gz
( Nginx 官方站點(diǎn)為 http://www. ,,國內(nèi)較好的中文站點(diǎn)為 http://www.
2 ) Nginx URL 哈希模塊
Upstream Hash Module nginx_upstream_hash-0.3.tar.gz
3 )正則表達(dá)式模塊
PCRE 7.7 pcre-7.7.tar.gz
( 到 http://www. 下載 PCRE 庫的最新穩(wěn)定版本 )
3. 3. 3. 3. 安裝 Nginx
(本安裝環(huán)境是在 Rethad5 上,所有的安裝文件和其他軟件都在 /usr/local/src 上)
#cd /usr/local/src
#gunzip nginx-0.6.32.tar.gz
#gunzip nginx_upstream_hash-0.3.tar.gz
#gunzip pcre-7.7.tar.gz
#tar -xvf nginx-0.6.32.tar
#tar -xvf nginx_upstream_hash-0.3.tar
#tar -xvf pcre-7.7.tar
#cd nginx-0.6.32 (隨后 patch 的運(yùn)行必須要在該目錄下)
#patch -p0 < /usr/local/src/nginx_upstream_hash-0.3/nginx.patch
4. 4. 4. 4. 驗(yàn)證安裝
安裝成功后 /usr/local/nginx 目錄下有四個(gè)子目錄分別是: conf ,、 html ,、 log s 、
sbin ,。其中 Nginx 的配置文件存放于 conf/nginx.Conf ,; Nginx 只有一個(gè)程
序文件位于 sbin 目錄下的 nginx 文件。 如果你使用默認(rèn)的配置文件,,則要 確
保系統(tǒng)的 8 0 端口沒被其他程序占用,, 然后 運(yùn)行 /usr/local/nginx/sbin/nginx 命 令
來啟動(dòng) Nginx 。
可以通過以下兩種方法測試 Nginx 是否成功啟動(dòng)
1. 打開瀏覽器訪問此機(jī)器的 http:// IP : 端口( 80 可免輸入) ,,如果瀏覽器 出
現(xiàn) Welcome to nginx! 則表示 Nginx 已經(jīng)安裝并運(yùn)行成功,。
2. 輸入命令 netstat -nlp 如果能找到 Nginx 的端口那也代表你的 Nginx 成
功啟動(dòng)了。我的輸出結(jié)果是:
tcp 0 0 0.0.0.0:82 0.0.0.0:* LISTEN 10209/nginx
5. 5. 5. 5. Nginx 的常用參數(shù)和控制
Nginx 安裝后只有一個(gè)程序文件,,本身并不提供各種管理程序,,它是使用 參
數(shù)和系統(tǒng)信號(hào)機(jī)制對(duì) Nginx 進(jìn)程本身進(jìn)行控制的。
程序運(yùn)行參數(shù)
-c <path_to_config> :使用指定的配置文件而不是 conf 目錄下的 nginx.conf ,。
-t :測試配置文件是否正確,,在運(yùn)行時(shí)需要重新加載配置的時(shí)候,此命令非常 重
要,,用來檢測所修改的配置文件是否有語法錯(cuò)誤,。
-v :顯示 nginx 版本號(hào)。
-V :顯示 nginx 的版本號(hào)以及編譯環(huán)境信息以及編譯時(shí)的參數(shù),。
如果 要測試某個(gè)配置文件是否書寫正確,,可以使用以下命令
/usr/local/nginx/ sbin/nginx – t – c conf/nginx _my .conf
通過信號(hào)量對(duì) Nginx 進(jìn)行控制
有一個(gè)奇怪的現(xiàn)象不知道大家有沒有注意到,就是你會(huì)發(fā)現(xiàn)只有啟動(dòng) Nginx
#./configure --add-module=/usr/local/src/nginx_upstream_hash-0.3/ --with-
pcre=/usr/local/src/pcre-7.7/ --prefix=/usr/local/nginx --with-
http_stub_status_module --without-select_module --without-poll_module
( 模塊的選擇請(qǐng)參考附錄 )
#make
#make install
的命令,,但并沒有關(guān)閉 Nginx 的命令,。原因是 Nginx 是通過信號(hào)量來控制 Ngin x
的,,包括重啟 Nginx 、停止 Nginx 等,。
Nginx 支持下表中的信號(hào):
有兩種方式來通過這些信號(hào)去控制 Nginx :
1 ) 通過 logs 目錄下的 nginx.pid 查看當(dāng)前運(yùn)行的 Nginx 的進(jìn)程 ID ,,通過
kill – XXX <pid> 來控制 Nginx ,其中 XXX 可通
cat $Nginx_HOME/logs/nginx.pid 來查看 ,。
2 )如果您的系統(tǒng)中只有一個(gè) Nginx 進(jìn)程,,那您也可以通過 killall 命令來完
成,例如運(yùn)行 killall – s HUP nginx 來讓 Nginx 重新加載配置,。
6. 6. 6. 6. 編寫管理 Nginx 的腳步
從上面的敘述可知道,, Nginx 是通過信號(hào)量來控制的,所以管理起來是比 較
麻煩的,,但我們可以通過書寫相應(yīng)的腳本來達(dá)到方便管理,。(這樣的管理腳本在
網(wǎng)上很多,大家也可以在網(wǎng)上查找)
步驟如下:
1 ) cd /usr/local/nginx
2 ) mkdir bin
3 ) vi nginx.sh
4 )內(nèi)容是:
-------------------------------------------------------------------------------
#!/bin/sh
NGINX_HOME=/usr/local/nginx
NGINX_SBIN=$NGINX_HOME/sbin/nginx
NGINX_CONF=$NGINX_HOME/conf/nginx.conf
NGINX_PID=$NGINX_HOME/logs/nginx.pid
NGINX_MAXFD=65535
信號(hào)名 作用描述
TERM, INT 快速關(guān)閉程序,,中止當(dāng)前正在處理的請(qǐng)求
QUIT 處理完當(dāng)前請(qǐng)求后,,關(guān)閉程序
HUP 重新加載配置,并開啟新的工作進(jìn)程,,關(guān)閉就的進(jìn)
程,,此操作不會(huì)中斷請(qǐng)求
USR1 重新打開日志文件,用于切換日志,,例如每天生成
一個(gè)新的日志文件
USR2 平滑升級(jí)可執(zhí)行程序
WINCH 從容關(guān)閉工作進(jìn)程
NGINX_NAME="Nginx"
. /etc/rc.d/init.d/functions
if [ ! -f $NGINX_SBIN ]
then
echo "$NGINX_NAME startup: $NGINX_SBIN not exists! "
exit
fi
start() {
ulimit -HSn $NGINX_MAXFD
$NGINX_SBIN -c $NGINX_CONF
ret=$?
if [ $ret -eq 0 ]; then
action $"Starting $NGINX_NAME: " /bin/true
else
action $"Starting $NGINX_NAME: " /bin/false
fi
}
stop() {
kill `cat $NGINX_PID`
ret=$?
if [ $ret -eq 0 ]; then
action $"Stopping $NGINX_NAME: " /bin/true
else
action $"Stopping $NGINX_NAME: " /bin/false
fi
}
restart() {
stop
start
}
check() {
$NGINX_SBIN -c $NGINX_CONF -t
}
reload() {
kill -HUP `cat $NGINX_PID`
}
relog() {
kill -USR1 `cat $NGINX_PID`
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
check)
check
;;
reload)
reload
;;
relog)
relog
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|check|relog}"
exit 1
esac
---------------------------------------------------------------------------
5 ) chmod +x nginx.sh
6 ) 現(xiàn)在可以通過如下方式來控制 Nginx
/usr/local/nginx/bin/nginx.sh start 啟動(dòng)
/usr/local/nginx/bin/nginx.sh stop 關(guān)閉
/usr/local/nginx/bin/nginx.sh restart 重新啟動(dòng),,即先關(guān)閉后啟動(dòng)
/usr/local/nginx/bin/nginx.sh reload 重新裝載配置文件
/usr/local/nginx/bin/nginx.sh check 檢查配置文件
/usr/local/nginx/bin/nginx.sh relog 重新打開日志文件
7. 7. 7. 7. 使用注意事項(xiàng)
1 ) 在生產(chǎn)運(yùn)行中,請(qǐng)注意 Nginx 的日志,,定期進(jìn)行日志文件的歸檔和截?cái)唷?BR>A 將現(xiàn)有日志文件 備份 ,;
B /usr/local/nginx/bin/nginx.sh relog
2 ) 當(dāng)要求 reload (重新裝載配置文件)時(shí), N ginx 會(huì)對(duì)配置文件進(jìn)行檢查,, 如
果配置文件有錯(cuò),,那么會(huì)繼續(xù)使用舊的,,已裝載完畢的配置文件運(yùn)行,。為保
證生產(chǎn)系統(tǒng)的穩(wěn)定運(yùn)行,修改完配置文件后,,必須進(jìn)行 check 操作,,以確保
配置文件的正確性。
3 ) 為保證生產(chǎn)系統(tǒng)的穩(wěn)定運(yùn)行,, N ginx 與 php-cgi 的通訊端口請(qǐng)使用 tcp/ip
方式,,而不使用 unix 套接字。雖然 tcp/ip 效率較低,,但是相對(duì)穩(wěn)定,,而 且
可以將 php 運(yùn)行在其他機(jī)器上。當(dāng) php 應(yīng)用運(yùn)行較慢,并發(fā)請(qǐng)求多的情況 下 ,,
使用 unix 套接字容易導(dǎo)致連接失敗,,從而報(bào)告 502 錯(cuò)誤( Bad Gateway )。
Nginx Nginx Nginx Nginx 配置文件詳解 配置文件詳解 配置文件詳解 配置文件詳解
接下來,,觀察 一個(gè) Nginx 默認(rèn) 的配置文件 并解析其中的含義
#user nobody; ----- 工作進(jìn)程的屬主
# worker_processes 1; ----- 工作進(jìn)程數(shù),,一般與 CUP 的核數(shù)相同
# error_log logs/error.log; ----- 這三個(gè)是 Nginx 的錯(cuò)誤日志
# error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid; -----Nginx pid 文件存放路徑
events {
# use epoll; -----Nginx 的工作模式, Linux 下性能最好的 event 模式
worker_connections 1024; ----- 每個(gè)工作進(jìn)程允許最大的同時(shí)連接數(shù)
}
-----http ,,設(shè)定 http 服務(wù)器,,利用它的反響代理功能,并可以利用它的負(fù)載 均
衡功能
http {
include mime.types; ----- 設(shè)定 mime 類型
default_type application/octet-stream;
------ 以下是設(shè)定日志格式
log_format main '$remote_addr - $remote_user [$time_local]
$request '
# '"$status" $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main; ----- 日志文件名
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on; ----- 是否開啟 gzip 功能
-----server 設(shè)定虛擬主機(jī)
server {
listen 8 0 ;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on
127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME
/scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based
configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
(文件配置內(nèi)容在逐步更新)
從上面 Nginx 默認(rèn)的配置我們可以知道,,我們可以通過編寫相應(yīng)的模塊達(dá)到我 們
想要的效果,。
Nginx Nginx Nginx Nginx 中的全局變量
通過例子學(xué)習(xí)
小例子:
1. 禁止訪問某個(gè)目錄下的文件
location ~ ^/data {
deny all;
}
2. 禁止多個(gè)目錄
location ~ ^/(cron|templates)/ {
deny all;
break;
$args
$content_length
$content_type
$document_root
$document_uri
$host
$http_user_agent
$http_cookie
$limit_rate
$request_body_file
$request_method
$remote_addr
$remote_port
$remote_user
$request_filename
$request_uri
$query_string
$scheme
$server_protocol
$server_addr
$server_name
$server_port
$uri
}
3. 禁止以 /data 開頭的文件
location ~ ^/data {
deny all;
}
4. 禁止單個(gè)目錄
不能禁止 .log.txt 能請(qǐng)求
location /searchword/cron/ {
deny all;
}
5. 禁止單個(gè)文件
location ~ /data/sql/data.sql {
deny all;
}
6. 只允許固定的 IP 訪問并有密碼
location / {
root /opt/htdocs/www;
allow Address;
allow Address;
allow Address;
deny all;
auth_basic "C1G_ADMIN";
auth_basic_user_file htpasswd;
}
7. 文件和目錄不存在的時(shí)候重定向:
if (!-e $request_filename) {
proxy_pass http://127.0.0.1;
}
(注意: Nginx 不允許 if 嵌套操作)
案例一:
要求 :
1) 配置兩個(gè)虛擬主機(jī),分別為:
A www. 根連接為 /data/html/my, 端口為 80
B www.My_two.com.cn 根連接為 /data/html/my_two, 端口為 8080)
2) 針對(duì)兩個(gè)域名把 gif,jpg 圖片設(shè)置過期時(shí)間為 1 個(gè)月
3) 對(duì) html ,、 css ,、 js 進(jìn)行壓縮
1,2 的實(shí)現(xiàn)
server {
listen 8 0 ;
server_name www. ;
charset gb2312 ;
access_log /data/my/ logs/host.access.log main;
location / {
root /data/html/my ;
index index.html index.htm;
}
location ~*\.(gif|jpg)$ {
Expires 30d;
}
}
server {
listen 8 080 ;
server_name www.My_two.com.cn ;
charset gb2312 ;
#access_log logs/host.access.log main;
location / {
root /data/html/my_two ;
index index.html index.htm;
}
location ~*\.(gif|jpg)$ {
Expires 30d;
}
}
3 的實(shí)現(xiàn)
在 http 里添加 :
gzip on;
gzip_types text/plain text/css text/html text/javascript
案例二
利用 Nginx 實(shí)現(xiàn)負(fù)載均衡,來自
http://dianping.blog.51cto.com/427241/95274/
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] $request '
# '"$status" $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log off;
access_log logs/access.log;# 日志文件名
sendfile on;
#tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
include gzip.conf;
# 集群中的所有后臺(tái)服務(wù)器的配置信息
upstream tomcats {
server 192.168.0.11:8080 weight=10;
server 192.168.0.12:8081 weight=10;
server 192.168.0.13:8080 weight=10;
server 192.168.0.14:8081 weight=10;
server 192.168.0.15:8080 weight=10;
server 192.168.0.16:8081 weight=10;
}
server {
listen 80;#HTTP 的端口
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location ~ ^/NginxStatus/ {
stub_status on; #Nginx 狀態(tài)監(jiān)控配置
access_log off;
auth_basic "NginxStatus";
auth_basic_user_file /usr/local/nginx/conf/htpasswd;
}
location ~ ^/(WEB-INF)/ {
deny all;
}
location ~ \.(htm|html|asp|php|gif|jpg|jpeg|png|bmp|ico|rar|css|js|
zip|java|jar|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {
root /opt/webapp;
expires 24h;
}
location / {
proxy_pass [url]http://tomcats;#[/url] 反向代理
include proxy.conf;
}
error_page 404 /html/404.html;
# redirect server error pages to the static page /50x.html
#
error_page 502 503 /html/502.html;
error_page 500 504 /50x.html;
location = /50x.html {
root html;
}
}
}
更具體地書寫配置文件,,在介紹完 rewrite 后會(huì)有更詳細(xì)的介紹,。

Nginx 監(jiān)控
要使用 Nginx 的監(jiān)控功能必須有一個(gè)用戶和密碼,因此 我們必需生成一個(gè)
htppasswd 文件,,這時(shí)候我們得用到 Apache 的 htpasswd 工具了,。
生成 htppasswd 文件的方法:
#htpasswd -c /tmp/htpassswd user
輸入兩次密碼就完成了,然后把生成好的 htpasswd 文件拷貝到 proxy 的機(jī)
器的 /usr/local/nginx/conf 目錄下就行了,。
有這個(gè)文件后,,我們還要配置 conf 文件才能應(yīng)用這一功能:
在根 {} 下書寫以下模塊
location ~^/NginxStatus{
stub_status on;
access_log on;
auth_basic "NginxStatus";
Auth_basic_user_file conf/htpasswd;
}
這個(gè)時(shí)候我們可以從瀏覽器中輸入 http://ip/NginxStatus
輸入驗(yàn)證賬號(hào)后我們就可以看到相關(guān)的信息了,例如 ;
Active connection:10
Server accepts handled requests
9309 8982 28890
Reading:1 Writing:3 Waiting:6
 
Nginx Rewrite 基礎(chǔ)
Rewrite 基本標(biāo)記
last 相當(dāng)于 Apache 里的 [L] 標(biāo)記,,表示完成 rewrite
break 終止匹配 , 不再匹配后面的規(guī)則
redirect 返回 302 臨時(shí)重定向 地址欄會(huì)顯示跳轉(zhuǎn)后的地址
permanent 返回 301 永久重定向 地址欄會(huì)顯示跳轉(zhuǎn)后的地址
Rewrite Rewrite Rewrite Rewrite 正則表達(dá)式匹配
* ~ 為區(qū)分大小寫匹配
* ~* 為不區(qū)分大小寫匹配
* !~ 和 !~* 分別為區(qū)分大小寫不匹配及不區(qū)分大小寫不匹配
Rewrite Rewrite Rewrite Rewrite 條件判斷
-f 和 !-f 用來判斷是否存在文件
-d 和 !-d 用來判斷是否存在目錄
-e 和 !-e 用來判斷是否存在文件或目錄
-x 和 !-x 用來判斷文件是否可執(zhí)行

Rewrite 應(yīng)用實(shí)例
偽地址
/123456/xxxx -> /xxxx?id=123456
rewrite ^/(\d+)/(.+)/ /$2?id=$1 last;
/[0-9]/my.html
rewrite
/(\d+)/my.html /friend/my_list.jsp?uid=$1; break;
通過偽地址能提高你網(wǎng)站的安全性,,這樣暴露給用戶的是一個(gè)假的地址。
域名跳轉(zhuǎn)
簡單域名跳轉(zhuǎn)
server
{
listen 80;
server_name sky .com;
index index.html index.htm index.php;
root /opt/ sky /www;
rewrite ^/ http:// skybin090804.cublog .c n /;
access_log off;
}
多域名轉(zhuǎn)向
server_name www. www.;
index index.html index.htm index.php;
root /data/sky;
if ($host ~ "sky\.net") {
rewrite ^(.*) http://www.$1 permanent;
}
Nginx 相關(guān)知識(shí)在更新中
 
附錄
Nginx Nginx Nginx Nginx 編譯模塊名稱解析 編譯模塊名稱解析 編譯模塊名稱解析 編譯模塊名稱解析
– prefix=PATH 設(shè)定安裝目錄
– sbin-path=PATH 設(shè)定程序文件目錄
– conf-path=PATH 設(shè)定配置文件 (nginx.conf) 目錄
– error-log-path=PATH 設(shè)定錯(cuò)誤日志目錄
– pid-path=PATH 設(shè)定 pid 文件 (nginx.pid) 目錄
– lock-path=PATH 設(shè)定 lock 文件 (nginx.lock) 目錄
– user=USER 設(shè)定程序運(yùn)行的用戶環(huán)境 (www)
– group=GROUP 設(shè)定程序運(yùn)行的組環(huán)境 (www)
– builddir=DIR 設(shè)定程序編譯目錄
– with-rtsig_module 允許 rtsig 模塊
– with-select_module 允許 select 模塊 ( 一種輪詢模式 , 不推薦用在高載環(huán)境 )
– without-select_module 不使用 select 模塊
– with-poll_module 允許 poll 模塊 ( 一種輪詢模式 , 不推薦用在高載環(huán)境 )
– without-poll_module 不使用 poll 模塊
– with-http_ssl_module 允許 ngx_http_ssl_module 模塊 (Apache 對(duì)應(yīng) :mod_ssl)
– with-http_realip_module 允許 ngx_http_realip_module 模塊 (mod_rpaf)
– with-http_addit ion_module 允許 ngx_http_addit ion_module 模塊 (mod_layout)
– with-http_xslt_module 允許 ngx_http_xslt_module 模塊
– with-http_sub_module 允許 ngx_http_sub_module 模塊
– with-http_dav_module 允許 ngx_http_dav_module 模塊 (mod_dav)
– with-http_flv_module 允許 ngx_http_flv_module 模塊 (mod_flvx)
– with-http_gzip_stat ic_module 允許 ngx_http_gzip_static_module 模塊 (mod_dflate)
– with-http_random_index_module 允許 ngx_http_random_index_module 模塊 (mod_autoindex)
– with-http_stub_status_module 允許 ngx_http_stub_status_module 模塊 (mod_status)
– without-http_charset_module 不使用 ngx_http_charset_module 模塊
– without-http_gzip_module 不使用 ngx_http_gzip_module 模塊
– without-http_ssi_module 不使用 ngx_http_ssi_module 模塊
– without-http_userid_module 不使用 ngx_http_userid_module 模塊
– without-http_access_module 不使用 ngx_http_access_module 模塊
– without-http_auth_basic_module 不使用 ngx_http_auth_basic_module 模塊
– without-http_autoindex_module 不使用 ngx_http_autoindex_module 模塊
– without-http_geo_module 不使用 ngx_http_geo_module 模塊
– without-http_map_module 不使用 ngx_http_map_module 模塊
– without-http_referer_module 不使用 ngx_http_referer_module 模塊
– without-http_rewrite_module 不使用 ngx_http_rewrite_module 模塊
– without-http_proxy_module 不使用 ngx_http_proxy_module 模塊
– without-http_fastcgi_module 不使用 ngx_http_fastcgi_module 模塊
– without-http_memcached_module 不使用 ngx_http_memcached_module 模塊
– without-http_limit_zone_module 不使用 ngx_http_limit_zone_module 模塊
– without-http_empty_gif_module 不使用 ngx_http_empty_gif_module 模塊
– without-http_browser_module 不使用 ngx_http_browser_module 模塊
– without-http_upstream_ip_hash_module
不使用 ngx_http_upstream_ip_hash_module 模塊
– with-http_perl_module 允許 ngx_http_perl_module 模塊
– with-perl_modules_path=PATH 設(shè)置 perl 模塊路徑
– with-perl=PATH 設(shè)置 perl 庫文件路徑
– http-log-path=PATH 設(shè)置 access log 文件路徑
– http-client-body-temp-path=PATH 設(shè)置客戶端請(qǐng)求臨時(shí)文件路徑
– http-proxy-temp-path=PATH 設(shè)置 http proxy 臨時(shí)文件路徑
– http-fastcgi-temp-path=PATH 設(shè)置 http fastcgi 臨時(shí)文件路徑
– without-http 不使用 HTTP server 功能
– with-mail 允許 POP3/IMAP4/SMTP 代理模塊
– with-mail_ssl_module 允許 ngx_mail_ssl_module 模塊
– without-mail_pop3_module 不允許 ngx_mail_pop3_module 模塊
– without-mail_imap_module 不允許 ngx_mail_imap_module 模塊
– without-mail_smtp_module 不允許 ngx_mail_smtp_module 模塊
– with-google_perftools_module 允許 ngx_google_perftools_module 模塊 ( 調(diào)試用 )
– with-cpp_test_module 允許 ngx_cpp_test_module 模塊
– add-module=PATH 允許使用外部模塊 , 以及路徑
– with-cc=PATH 設(shè)置 C 編譯器路徑
– with-cpp=PATH 設(shè)置 C 預(yù)處理路徑
– with-cc-opt=OPTIONS 設(shè)置 C 編譯器參數(shù)
– with-ld-opt=OPTIONS 設(shè)置連接文件參數(shù)
– with-cpu-opt=CPU 為指定 CPU 優(yōu)化 , 可選參數(shù)有 :
pentium, pentiumpro, pentium3, pentium4,
athlon, opteron, sparc32, sparc64, ppc64
– without-pcre 不使用 pcre 庫文件
– with-pcre=DIR 設(shè)定 PCRE 庫路徑
– with-pcre-opt=OPTIONS 設(shè)置 PCRE 運(yùn)行參數(shù)
– with-md5=DIR 設(shè)定 md5 庫文件路徑
– with-md5-opt=OPTIONS 設(shè)置 md5 運(yùn)行參數(shù)
– with-md5-asm 使用 md5 源文件編譯
– with-sha1=DIR 設(shè)定 sha1 庫文件路徑
– with-sha1-opt=OPTIONS 設(shè)置 sha1 運(yùn)行參數(shù)
– with-sha1-asm 使用 sha1 源文件編譯
– with-zlib=DIR 設(shè)定 zlib 庫文件路徑
– with-zlib-opt=OPTIONS 設(shè)置 zlib 運(yùn)行參數(shù)
– with-zlib-asm=CPU 使 zlib 對(duì)特定的 CPU 進(jìn)行優(yōu)化 , 可選參數(shù) :
pentium, pentiumpro
– with-openssl=DIR 設(shè)定 OpenSSL 庫文件路徑
– with-openssl-opt=OPTIONS 設(shè)置 OpenSSL 運(yùn)行參數(shù)
– with-debug 允許調(diào)試日志
介紹一個(gè) Nginx 外部模塊 :
ngx_http_accesskey_module
封堵下載軟件的好東東 , 只有遠(yuǎn)程 IP 地址符合加密字串的才被允許訪問 . 示例如下 :
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg “ key ” ;
accesskey_signature “ mypass$remote_addr ” ;
}
模塊地址 :
http://wiki./NginxHttpAccessKeyModule
其它更多外部模塊請(qǐng)?jiān)L問 :
http://wiki./NginxModules
在 OpenBSD 環(huán)境下安裝 Nginx 需要注意下 , 在 ./configure 之后還需要修改一下源文件,,否則
后面 make 過不去 :
vi +74 src/os/unix/ngx_posix_config.h
將這行的 malloc.h 改成 stdlib.h, 保存退出 .
然后再執(zhí)行 make && make install 即可 !< begin ajax random post data >
以上模塊解析來自: http://www.oschina.net/bbs/thread/719

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多