最近,有位朋友向小青咨詢:“什么是Nginx?,面試的時候一般都會問哪些專業(yè)的問題呢?”,但說實話,我對Nginx的了解處于小白的階段。所以,小青不得不向同事以及度娘請教,今天就將我請教的成果整理如下,希望能夠幫助到大家哦!
1、什么是Nginx
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發(fā)的,第一個公開版本0.1.0發(fā)布于2004年10月4日。其將源代碼以類BSD許可證的形式發(fā)布,因它的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。2011年6月1日,nginx 1.0.4發(fā)布。
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協(xié)議下發(fā)行。其特點是占有內(nèi)存少,并發(fā)能力強,事實上nginx的并發(fā)能力在同類型的網(wǎng)頁服務器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。
2、為什么要用Nginx
跨平臺、配置簡單、方向代理、高并發(fā)連接:處理2-3萬并發(fā)連接數(shù),官方監(jiān)測能支持5萬并發(fā),內(nèi)存消耗小:開啟10個nginx才占150M內(nèi)存 ,nginx處理靜態(tài)文件好,耗費內(nèi)存少,
而且Nginx內(nèi)置的健康檢查功能:如果有一個服務器宕機,會做一個健康檢查,再發(fā)送的請求就不會發(fā)送到宕機的服務器了。重新將請求提交到其他的節(jié)點上。
使用Nginx的話還能:
節(jié)省寬帶:支持GZIP壓縮,可以添加瀏覽器本地緩存
穩(wěn)定性高:宕機的概率非常小
接收用戶請求是異步的
3、為什么Nginx性能這么高
因為他的事件處理機制:異步非阻塞事件處理機制:運用了epoll模型,提供了一個隊列,排隊解決
4.Nginx怎么處理請求的
nginx接收一個請求后,首先由listen和server_name指令匹配server模塊,再匹配server模塊里的location,location就是實際地址
5.什么是正向代理和反向代理
1、正向代理就是一個人發(fā)送一個請求直接就到達了目標的服務器
2、反方代理就是請求統(tǒng)一被Nginx接收,nginx反向代理服務器接收到之后,按照一定的規(guī) 則分發(fā)給了后端的業(yè)務處理服務器進行處理了
6.使用“反向代理服務器的優(yōu)點是什么?
反向代理服務器可以隱藏源服務器的存在和特征。它充當互聯(lián)網(wǎng)云和web服務器之間的中間層。這對于安全方面來說是很好的,特別是當您使用web托管服務時。
7.Nginx的優(yōu)缺點
優(yōu)點:
1.占內(nèi)存小,可實現(xiàn)高并發(fā)連接,處理響應快
2.可實現(xiàn)http服務器、虛擬主機、方向代理、負載均衡
3.Nginx配置簡單
4.可以不暴露正式的服務器IP地址
缺點:
動態(tài)處理差:nginx處理靜態(tài)文件好,耗費內(nèi)存少,但是處理動態(tài)頁面則很雞肋,現(xiàn)在一般前端用nginx作為反向代理抗住壓力,
8.如何用Nginx解決前端跨域問題?
使用Nginx轉發(fā)請求。把跨域的接口寫成調本域的接口,然后將這些接口轉發(fā)到真正的請求地址。
9 .限流怎么做的,算法是什么,(限制請求速度)
Nginx限流就是限制用戶請求速度,防止服務器受不了
限流有3種,我這只寫了最平常的一種(限制訪問頻率(正常流量))
1、限制訪問頻率(正常流量)
2、限制訪問頻率(突發(fā)流量)
3、限制并發(fā)連接數(shù)
1、限制訪問頻率(正常流量):限制一個用戶發(fā)送的請求,我Nginx多久接收一個。
#定義限流維度,一個用戶一分鐘一個請求進來,多余的全部漏掉
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/m;
#綁定限流維度
server{
location/seckill.html{
limit_req zone=one
proxy_pass http://lj_seckill;
}
}
1r/s代表1秒一個請求 1r/m一分鐘接收一個請求
(此流也叫做漏桶流,多余的請求全部不要,漏掉)
10.為什么要做動靜分離?
Nginx是當下最熱的Web容器,網(wǎng)站優(yōu)化的重要點在于靜態(tài)化網(wǎng)站,網(wǎng)站靜態(tài)化的關鍵點則是是動靜分離,動靜分離是讓動態(tài)網(wǎng)站里的動態(tài)網(wǎng)頁根據(jù)一定規(guī)則把不變的資源和經(jīng)常變的資源區(qū)分開來,動靜資源做好了拆分以后,我們則根據(jù)靜態(tài)資源的特點將其做緩存操作。
讓靜態(tài)的資源只走靜態(tài)資源服務器,動態(tài)的走動態(tài)的服務器
Nginx的靜態(tài)處理能力很強,但是動態(tài)處理能力不足,因此,在企業(yè)中常用動靜分離技術。
對于靜態(tài)資源比如圖片,js,css等文件,我們則在反向代理服務器nginx中進行緩存。這樣瀏覽器在請求一個靜態(tài)資源時,代理服務器nginx就可以直接處理,無需將請求轉發(fā)給后端服務器tomcat。
若用戶請求的動態(tài)文件,比如servlet,jsp則轉發(fā)給Tomcat服務器處理,從而實現(xiàn)動靜分離。這也是反向代理服務器的一個重要的作用。
以上,就是小編為大家整理的Nginx面試常見問題,希望能夠幫助到大家!由于內(nèi)容是整理的,如有侵權請聯(lián)系小編進行刪除!
北大青鳥運城恩馳校區(qū)是北大青鳥APTECH的晉南直屬學校,依托北京大學資源,獲得北京大學師資、學術、技術教學資源支持,成為目前晉南地區(qū)獲得授權且規(guī)模較大的軟件開發(fā)技術實訓中心,同時也是北大青鳥APTECH體系中開設的全課程以及與企業(yè)無縫對接的綜合校區(qū),打造北大青鳥運城恩馳校區(qū)采用公司+學校的辦學模式,將北大青鳥的教育資源、教學條件與實戰(zhàn)化的企業(yè)項目運營相結合,成為全真實模擬IT公司教學模式的典范。
現(xiàn)開設課程涵蓋: WEB前端開發(fā),數(shù)據(jù)庫開發(fā),SSH、SSM、JQuery框架集開發(fā),ASP.Net MVC開發(fā)企業(yè)級應用。
運城北大青鳥為提升學員的綜合素質,豐富學員們的課余生活。特舉辦演講比賽、超級演說家、PPT大賽、辯論賽等各種活動。如果你也想改變自己,想加入這個大家庭,那么可以點擊網(wǎng)站的在線咨詢,或者在線報名。老師會第一時間與你聯(lián)系。