Nginx的靜態代理

Nginx的靜態代理

Nginx的web請求的處理機制

  • Nginx結合多進程和異步機制對外提供服務,異步機制使用的是異步非阻塞機制,即AIO,Nginx的master進程會生成多個worker進程,master進程負責管理這些worker進程的生命週期、接受外部命令、解析perl腳本等工做,而worker進程則用於接受和處理用戶的客戶端請求;css

  • 每一個worker進程都是使用異步非阻塞方式處理多個客戶端請求,當某個worker接到客戶端的請求以後,其會調用IO進行處理,若是不能當即獲得結果,worker機會去處理其餘請求,當這個IO返回結果時,會通知worker進程,worker進程接收到通知後,就會掛起當前正在執行的事務,拿IO返回結果去響應給客戶端,worker進程採用的是epoll事件驅動模型與IO進行通訊,epoll模型底層採用的是"回調callback"替代了輪詢,使用效率要高於select模型html

使用到的命令

  • ngxin -h : 查看命令選項nginx

  • ngxin -c file : 啓動命令web

  • ngxin -s stop/quite : 中止命令正則表達式

  • nginx -s reload : 平滑重啓服務器

  • nginx -tq : 檢測配置文件是否出錯,經常使用異步

請求定位(開胃小菜)

這個其實不算核心功能,但做爲一個引入爲後面的講解作一個鋪墊仍是頗有必要的,在咱們安裝玩Nginx後,咱們對其進行訪問,就會獲得一個"Welcome to nginx"的頁面,爲何咱們訪問80端口就能訪問到這個頁面呢?其中是否是指定了默認的顯示的頁面,就想index.html那樣?jsp

  

首先咱們找到安裝目錄下的conf文件夾下的nginx.conf配置文件:cat /usr/local/nginx/conf/nginx.conf測試

而後咱們就能夠看到如下配置:ui

  • listen:表明監聽的端口

  • location :我的理解爲一個攔截規則並對攔截到的請求作中括號裏面的邏輯

  • location後跟的是 "/",表示攔截全部,也對資源定位有一個約束,後面有詳細介紹

  • root:指定一個資源定位目錄爲 :html目錄,也能夠指定絕對路徑

  • index:指定一個資源文件爲:index.tml,後面還能夠跟多個,第一個訪問不了就訪問第二個

  • 總結:攔截80端口的全部請求,指定路徑爲:根目錄下的html目錄下的index.html資源

  • 總結:攔截80端口的全部請求,指定路徑爲:根目錄下的html目錄下的index.html資源

下面咱們來看看這個index.html是個什麼頁面

  

能夠看到這個html,就是咱們剛安裝完畢後,測試訪問時的那個頁面,爲何要說這個東西呢?由於後面的知識點都要設計到nginx.conf中的攔截規則已經相應邏輯操做,在這裏先打個鋪墊。

靜態代理

  • 通過前面的開胃小菜,我相信你們內心都對Nginx的大概邏輯流程有一點點的B數了

  • 動態代理:將全部的靜態資源,好比【html、css、js、jpg、...】等資源存放到Nginx服務器,而不存放在應用服務器Tomcat中,當客戶端對這些靜態資源進行訪問的時候,就能夠不用去麻煩Tomcat了,咱們Nginx直接將其響應給客戶端,這樣就大大下降了應用服務器Tomcat的負載壓力,

  • 同時Nginx對於靜態資源的處理相較於Tomcat,全部在不少場景裏面,Ningx都是做爲靜態代理服務器,專門處理靜態資源的請求響應;

下面咱們動手操刀,一塊兒來看看着靜態代理

  • 首先咱們配置咱們的Nginx的配置文件,增添咱們本身的攔截規則:

  • 這裏值得注意的是,每一個配置後面都是以";"結尾,否則識別不出來

  • 我配置的這個攔截規則是什麼意思呢?攔截 「ip:port/bb/cc」 的請求,

  • 對攔截到的請求響應資源 : /opt/aa/bb/cc/default.html頁面

  • 級聯建立自定義資源存放目錄 : mkdir /opt/aa/bb/cc -p

  • 進入cc目錄,建立自定義資源default.html : echo "This is default page" > /opt/aa/bb/cc/default.html

  • 而後咱們平滑重動Nginx : ngxin -s reload,而後開始訪問測試:

location後跟的攔截規則是支持正則表達式的,下面咱們來看看:

首先修改nginx.conf配置文件以下:

  

  • 正則表達式的運用在Nginx中都是以 ~ 打頭 以$收尾 : ~ ...$

  • .:表示任意字符

  • *:0個或多個

  • \:轉義,後面跟"."表示真正的"."

  • (jpg|png|css|js|html) :限定請求的資源類型爲其中之一;

修改完配置文件,記得檢測一下配置文件是否語法經過 : nginx -tq

  

發現有誤,就要及時的改正:大括號和正則表達式之間有個空格,須要打出來

咱們已經把攔截規則設立好了,咱們的靜態資源也獲得位才能看效果,上傳圖片到 /opt/statics/images/

  

而後咱們想一下,根據前面教的經驗,這些圖片根據咱們的攔截規則,咱們該發起什麼樣的URL才能訪問?

http://92.168.159.169:80 / ?? / ?? ,咱們知道個人資源訪問規則是 Root指定的目錄+攔截的目錄

因此路徑爲? http://92.168.159.169:80 / images/6.jpg ,先測試一下行的同否

  

完美! 你,想通了嗎?

首先咱們的攔截規則是零個或多個任意字符 " ip:port//images/6" 符合咱們的攔截規則

而後".jpg"也符合咱們的請求資源類型約束規則

其次就是資源定位問題:

  • root屬性所指定的目錄 :/opt/statics

  • 此條請求的攔截規則中路徑:images/6.jsp

  • 兩個相併 : /opt/statics/images/6.jgp ,完美路徑!

相關文章
相關標籤/搜索