nginx 面试题
1、什么是Nginx
Nginx是一個高性能的HTTP和反向代理服務器。同時也是一個 IMAP/POP3/SMTP 代理服務器。
2、Nginx主要特性
Nginx它支持內核Poll模型,能經受高負載的考驗,有報告表明能支持高達50,000個并發連接數。
例如當前 apache一旦上到200個以上進程,web響應速度就明顯非常緩慢了。而Nginx采取了分階段資源分配技術,使得它的CPU與內存占用率非常低。nginx官方表示保持10,000個沒有活動的連接,它只占2.5M內存,所以類似DOS這樣的攻擊對nginx來說基本上是毫無用處的。
它的啟動特別容易,并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。對軟件版本進行進行熱升級。
當采用select()/poll()調用時,還可以限制每個進程的連接數。
當采用select()/poll()調用時,還可以限制每個進程的連接數。
(FreeBSD4.1+),TCP_DEFER_ACCEPT (Linux 2.4+)的支持,從而大大提高了性能。
3、Nginx常用命令
3.1、啟動
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、工作模式以及連接數上限
events { use epoll; #epoll 是多路復? IO(I/O Multiplexing)中的?種?式,但是僅?于 linux2.6 #以上內核,可以??提? nginx 的性能 worker_connections 1024;#單個后臺 worker process 進程的最?并發鏈接數 # multi_accept on; }5、Nginx負載均衡的幾種算法
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器down掉,能自動剔除。
指定輪詢幾率,weight和訪問比率成正比,用于后端服務器性能不均的情況。
每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
按照訪問的URL的hash結果來分配請求,使每個URL定向到同一個后端服務器。
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
6、Nginx的進程模型
在master-worker模式下,有一個master進程和至少一個的worker進程。
單進程模式只有一個進程。
7、如何定義錯誤提示頁面
#error_page 500 502 503 504 /50x.html; location = /50x.html {root /root; }8、如何精準匹配路徑
location = /get { #規則 A }9、路徑匹配優先級
多個location 配置的情況下匹配順序為
當有匹配成功時候,停止匹配,按當前匹配規則處理請求。
10、如何將請求轉發給后端應用服務器
location = / {proxy_pass http://tomcat:8080/index }11、根據文件類型設置過期時間
location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {if (-f $request_filename) {expires 1h;break; } }12、禁止訪問某個目錄
location ^~/path/ {deny all; }13、Nginx負載均衡實現過程
首先在http模塊中配置使用upstream模塊定義后臺的webserver的池子,名為proxy-web,在池子中我們可以添加多臺后臺webserver,其中狀態檢查、調度算法都是在池子中配置;然后在serverr模塊中定義虛擬主機,但是這個虛擬主機不指定自己的web目錄站點,它將使用location 匹配url然后轉發到上面定義好的web池子中,最后根據調度策略再轉發到后臺web server上。
14、負載均衡配置
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、設置超時時間
http {keepalive_timeout 60; ###設置客戶端連接保持會話的超時時間,超過這個時間,服務器會關閉該連接。 tcp_nodelay on; ####打開 tcp_nodelay,在包含了 keepalive 參數才有效client_header_timeout 15; ####設置客戶端請求頭讀取超時時間,如果超過這個時間,客戶端還沒有發送任何數據, Nginx 將返回“Request time out(408)”錯誤client_body_timeout 15;####設置客戶端請求主體讀取超時時間,如果超過這個時間,客戶端還沒有發送任何數據, Nginx 將返回“Request time out(408)”錯誤send_timeout 15; ####指定響應客戶端的超時時間。這個超過僅限于兩個連接活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx 將會關閉連接。}16、開啟壓縮功能的好壞
結束!
“人這一生,總要放棄很多東西”“包括我?”“對,包括你!”
總結
- 上一篇: html鼠标悬停位置,html – 当我
- 下一篇: 人才管理是什么意思_上海托管仓库外包仓库