nginx 面试题
1、什么是Nginx
Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器。同時(shí)也是一個(gè) IMAP/POP3/SMTP 代理服務(wù)器。
2、Nginx主要特性
Nginx它支持內(nèi)核Poll模型,能經(jīng)受高負(fù)載的考驗(yàn),有報(bào)告表明能支持高達(dá)50,000個(gè)并發(fā)連接數(shù)。
例如當(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來(lái)說(shuō)基本上是毫無(wú)用處的。
它的啟動(dòng)特別容易,并且?guī)缀蹩梢宰龅?*24不間斷運(yùn)行,即使運(yùn)行數(shù)個(gè)月也不需要重新啟動(dòng)。對(duì)軟件版本進(jìn)行進(jìn)行熱升級(jí)。
當(dāng)采用select()/poll()調(diào)用時(shí),還可以限制每個(gè)進(jìn)程的連接數(shù)。
當(dāng)采用select()/poll()調(diào)用時(shí),還可以限制每個(gè)進(jìn)程的連接數(shù)。
(FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,從而大大提高了性能。
3、Nginx常用命令
3.1、啟動(dòng)
nginx3.2、停止
nginx -s stop 或 nginx -s quit3.3、重載配置
./sbin/nginx -s reload(平滑重啟 ) 或 service nginx reload3.4、重載指定配置文件
.nginx -c /usr/local/nginx/conf/nginx.conf3.5、查看版本
nginx -v3.6、檢查配置文件是否正確
nginx -t3.7、顯示幫助命令
nginx -h4、工作模式以及連接數(shù)上限
events { use epoll; #epoll 是多路復(fù)? IO(I/O Multiplexing)中的?種?式,但是僅?于 linux2.6 #以上內(nèi)核,可以??提? nginx 的性能 worker_connections 1024;#單個(gè)后臺(tái) worker process 進(jìn)程的最?并發(fā)鏈接數(shù) # multi_accept on; }5、Nginx負(fù)載均衡的幾種算法
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動(dòng)剔除。
指定輪詢幾率,weight和訪問比率成正比,用于后端服務(wù)器性能不均的情況。
每個(gè)請(qǐng)求按訪問ip的hash結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器,可以解決session的問題。
按照訪問的URL的hash結(jié)果來(lái)分配請(qǐng)求,使每個(gè)URL定向到同一個(gè)后端服務(wù)器。
按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
6、Nginx的進(jìn)程模型
在master-worker模式下,有一個(gè)master進(jìn)程和至少一個(gè)的worker進(jìn)程。
單進(jìn)程模式只有一個(gè)進(jìn)程。
7、如何定義錯(cuò)誤提示頁(yè)面
#error_page 500 502 503 504 /50x.html; location = /50x.html {root /root; }8、如何精準(zhǔn)匹配路徑
location = /get { #規(guī)則 A }9、路徑匹配優(yōu)先級(jí)
多個(gè)location 配置的情況下匹配順序?yàn)?/p>
當(dāng)有匹配成功時(shí)候,停止匹配,按當(dāng)前匹配規(guī)則處理請(qǐng)求。
10、如何將請(qǐng)求轉(zhuǎn)發(fā)給后端應(yīng)用服務(wù)器
location = / {proxy_pass http://tomcat:8080/index }11、根據(jù)文件類型設(shè)置過(guò)期時(shí)間
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {if (-f $request_filename) {expires 1h;break; } }12、禁止訪問某個(gè)目錄
location ^~/path/ {deny all; }13、Nginx負(fù)載均衡實(shí)現(xiàn)過(guò)程
首先在http模塊中配置使用upstream模塊定義后臺(tái)的webserver的池子,名為proxy-web,在池子中我們可以添加多臺(tái)后臺(tái)webserver,其中狀態(tài)檢查、調(diào)度算法都是在池子中配置;然后在serverr模塊中定義虛擬主機(jī),但是這個(gè)虛擬主機(jī)不指定自己的web目錄站點(diǎn),它將使用location 匹配url然后轉(zhuǎn)發(fā)到上面定義好的web池子中,最后根據(jù)調(diào)度策略再轉(zhuǎn)發(fā)到后臺(tái)web server上。
14、負(fù)載均衡配置
Upstream proxy_nginx {server 192.168.0.254 weight=1max_fails=2 fail_timeout=10s ; server 192.168.0.253 weight=2 max_fails=2fail_timeout=10s;server192.168.0.252 backup; server192.168.0.251 down; }server{listen 80;server_name xiaoka.com; }location / {proxy_pass http:// proxy_nginx;proxy_set_header Hostproxy_set_header X-Real-IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }15、設(shè)置超時(shí)時(shí)間
http {keepalive_timeout 60; ###設(shè)置客戶端連接保持會(huì)話的超時(shí)時(shí)間,超過(guò)這個(gè)時(shí)間,服務(wù)器會(huì)關(guān)閉該連接。 tcp_nodelay on; ####打開 tcp_nodelay,在包含了 keepalive 參數(shù)才有效client_header_timeout 15; ####設(shè)置客戶端請(qǐng)求頭讀取超時(shí)時(shí)間,如果超過(guò)這個(gè)時(shí)間,客戶端還沒有發(fā)送任何數(shù)據(jù), Nginx 將返回“Request time out(408)”錯(cuò)誤client_body_timeout 15;####設(shè)置客戶端請(qǐng)求主體讀取超時(shí)時(shí)間,如果超過(guò)這個(gè)時(shí)間,客戶端還沒有發(fā)送任何數(shù)據(jù), Nginx 將返回“Request time out(408)”錯(cuò)誤send_timeout 15; ####指定響應(yīng)客戶端的超時(shí)時(shí)間。這個(gè)超過(guò)僅限于兩個(gè)連接活動(dòng)之間的時(shí)間,如果超過(guò)這個(gè)時(shí)間,客戶端沒有任何活動(dòng),Nginx 將會(huì)關(guān)閉連接。}16、開啟壓縮功能的好壞
結(jié)束!
“人這一生,總要放棄很多東西”“包括我?”“對(duì),包括你!”
總結(jié)
- 上一篇: html鼠标悬停位置,html – 当我
- 下一篇: 人才管理是什么意思_上海托管仓库外包仓库