|
events { http { default_type application/octet-stream; #這個(gè)例子是fastcgi的例子,如果用fastcgi就要仔細(xì)看 location / { #所有php后綴的,都通過(guò)fastcgi發(fā)送到1025端口上 #這個(gè)是反向代理的例子 #靜態(tài)文件,nginx自己處理 #把請(qǐng)求轉(zhuǎn)發(fā)給后臺(tái)web服務(wù)器,反向代理和fastcgi的區(qū)別是,反向代理后面是web服務(wù)器,fastcgi后臺(tái)是fasstcgi監(jiān)聽(tīng)進(jìn)程,當(dāng)然,協(xié)議也不一樣。 #upstream的負(fù)載均衡,weight是權(quán)重,可以根據(jù)機(jī)器配置定義權(quán)重。據(jù)說(shuō)nginx可以根據(jù)后臺(tái)響應(yīng)時(shí)間調(diào)整。后臺(tái)需要多個(gè)web服務(wù)器。
—————————————– Nginx 安置后只有一個(gè)法式文件,自己并不供給各類辦理法式,它是利用參數(shù)和體系旌旗燈號(hào)機(jī)制對(duì) Nginx 歷程自己舉行節(jié)制的。 Nginx 的參數(shù)包羅有如下幾個(gè): -c :利用指定的設(shè)置裝備擺設(shè)文件而不是 conf 目次下的 nginx.conf 。 -t:測(cè)試設(shè)置裝備擺設(shè)文件是否準(zhǔn)確,在運(yùn)行時(shí)必要從頭加載設(shè)置裝備擺設(shè)的時(shí)辰,此號(hào)令很是主要,用來(lái)檢測(cè)所點(diǎn)竄的設(shè)置裝備擺設(shè)文件是否有語(yǔ)法錯(cuò)誤。 -v:表現(xiàn) nginx 版本號(hào)。 -V:表現(xiàn) nginx 的版本號(hào)以及編譯情況信息以及編譯時(shí)的參數(shù)。 比方我們要測(cè)試某個(gè)設(shè)置裝備擺設(shè)文件是否謄寫(xiě)準(zhǔn)確,我們可以利用以下號(hào)令 sbin/nginx – t – c conf/nginx2.conf
經(jīng)由過(guò)程旌旗燈號(hào)對(duì) Nginx 舉行節(jié)制 Nginx 撐持下表中的旌旗燈號(hào):
旌旗燈號(hào)名
感化形貌
TERM, INT
快速封閉法式,中斷當(dāng)前正在處置的懇求
QUIT
處置完當(dāng)前懇求后,封閉法式
HUP
從頭加載設(shè)置裝備擺設(shè),并開(kāi)啟新的事情歷程,封閉就的歷程,此操縱不會(huì)間斷懇求
USR1
從頭打開(kāi)日記文件,用于切換日記,比方天天天生一個(gè)新的日記文件
USR2
光滑進(jìn)級(jí)可實(shí)行法式
WINCH
自在封閉事情歷程 有兩種體例來(lái)經(jīng)由過(guò)程這些旌旗燈號(hào)去節(jié)制 Nginx,第一是經(jīng)由過(guò)程 logs 目次下的 nginx.pid 檢察當(dāng)前運(yùn)行的 Nginx 的歷程 ID,經(jīng)由過(guò)程 先來(lái)看一個(gè)現(xiàn)實(shí)的設(shè)置裝備擺設(shè)文件: user nobody;# 事情歷程的屬主
worker_processes 4;# 事情歷程數(shù),一樣平常與 CPU 核數(shù)等同
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
use epoll;#Linux 下機(jī)能最好的 event 模式
worker_connections 2048;# 每個(gè)事情歷程許可最大的同時(shí)毗連數(shù)
}
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;
# 集群中的全部背景辦事器的設(shè)置裝備擺設(shè)信息
upstream tomcats {
server 192.168.0.11:8080 weight=10;
server 192.168.0.11:8081 weight=10;
server 192.168.0.12:8080 weight=10;
server 192.168.0.12:8081 weight=10;
server 192.168.0.13:8080 weight=10;
server 192.168.0.13: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 狀況監(jiān)控設(shè)置裝備擺設(shè)
access_log off;
}
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 http://tomcats;# 反向代辦署理
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;
}
}
}
上 面是一個(gè)現(xiàn)實(shí)網(wǎng)站的設(shè)置裝備擺設(shè)實(shí)例,此中灰色筆墨為設(shè)置裝備擺設(shè)申明。上述設(shè)置裝備擺設(shè)中,起首我們界說(shuō)了一個(gè) location ~ ^/NginxStatus/,如許經(jīng)由過(guò)程 http://localhost/NginxStatus/ 就可以監(jiān)控到 Nginx 的運(yùn)行信息,表現(xiàn)的內(nèi)容如下: Active connections: 70 server accepts handled requests 14553819 14553819 19239266 Reading: 0 Writing: 3 Waiting: 67
NginxStatus 表現(xiàn)的內(nèi)容意思如下:
經(jīng)由過(guò)程正則表達(dá)式,我們可讓 Nginx 辨認(rèn)出各類靜態(tài)文件,比方 images 路徑下的全部懇求可以寫(xiě)為: location ~ ^/images/ {
root /opt/webapp/images;
}
而下面的設(shè)置裝備擺設(shè)則界說(shuō)了幾種文件范例的懇求處置體例。 location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)$ {
root /opt/webapp;
expires 24h;
}
對(duì)付比方圖片、靜態(tài) HTML 文件、js 劇本文件和 css 樣式文件等,我們但愿 Nginx 直接處置并返回給欣賞器,如許可以大大的加速網(wǎng)頁(yè)欣賞時(shí)的速率。是以對(duì)付這類文件我們必要經(jīng)由過(guò)程 root 指令來(lái)指定文件的存放路徑,同時(shí)由于這類文件并不常點(diǎn)竄,經(jīng)由過(guò)程 expires 1 January, 1970, 00:00:01 GMT; expires 60s; expires 30m; expires 24h; expires 1d; expires max; expires off;
Nginx 自己并不撐持此刻風(fēng)行的 JSP、ASP、PHP、PERL 等動(dòng)態(tài)頁(yè)面,可是它可以經(jīng)由過(guò)程反向代辦署理將懇求發(fā)送到后真?zhèn)€辦事器,比方 Tomcat、Apache、IIS 等來(lái)完成動(dòng)態(tài)頁(yè)面的懇求處置。前面的設(shè)置裝備擺設(shè)示例中,我們起首界說(shuō)了由 Nginx 直接處置的一些靜態(tài)文件懇求后,其他全部的懇求經(jīng)由過(guò)程 proxy_pass 指令傳送給后真?zhèn)€辦事器(在上述例子中是 Tomcat)。最簡(jiǎn)略的 location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Real-IP $remote_addr;
}
這里我們沒(méi)有利用到集群,而是將懇求直接送到運(yùn)行在 8080 端口的 Tomcat 辦事上來(lái)完成近似 JSP 和 Servlet 的懇求處置。 當(dāng)頁(yè)面的拜候量很是大的時(shí)辰,每每必要多個(gè)應(yīng)用辦事器來(lái)配合負(fù)擔(dān)動(dòng)態(tài)頁(yè)面的實(shí)行操縱,這時(shí)我們就必要利用集群的架構(gòu)。 Nginx 經(jīng)由過(guò)程 location / {
proxy_pass http://tomcats;
proxy_set_header X-Real-IP $remote_addr;
}
在 Nginx 的集群設(shè)置裝備擺設(shè)中,Nginx 利用最簡(jiǎn)略的均勻分派法則給集群中的每個(gè)節(jié)點(diǎn)分派懇求。一旦某個(gè)節(jié)點(diǎn)失效時(shí),大概從頭起效時(shí),Nginx 城市很是實(shí)時(shí)的處置狀況的轉(zhuǎn)變,以包管不會(huì)影響到用戶的拜候。 盡 管整個(gè)法式包只有五百多 K,但麻雀雖小、五臟俱全。 Nginx 官方供給的各類功效模塊包羅萬(wàn)象,連系這些模塊可以完備各類百般的設(shè)置裝備擺設(shè)要求,比方:壓縮、防盜鏈、集群、FastCGI、流媒體辦事器、 Memcached 撐持、URL 重寫(xiě)等等,更關(guān)頭的是 Nginx 擁有 Apache 和其他 HTTP 辦事器無(wú)法對(duì)比的高機(jī)能。您乃至可以在不轉(zhuǎn)變?cè)芯W(wǎng)站的架構(gòu)上,經(jīng)由過(guò)程在前端引入 Nginx 來(lái)晉升網(wǎng)站的拜候速率。 本文只是簡(jiǎn)略先容了 Nginx 的安置以及常見(jiàn)的根基的設(shè)置裝備擺設(shè)和利用,更多關(guān)于 Nginx 的信息請(qǐng)閱讀文章背面的參考資本。在這里要很是感激我的伴侶——陳磊(chanix@msn.com),他一向在做 Nginx 的中文 WIKI(http://wiki./NginxChs),同時(shí)也是他先容給我這么好的一款軟件。 若是您的網(wǎng)站是運(yùn)行在 Linux 下,若是您并沒(méi)有利用一些很是龐大的并且確定 Nginx 無(wú)法完成的功效,那您應(yīng)該嘗嘗 Nginx 。 |
|
|