【我的筆記】跟着官方文檔學nginx——Beginner’s Guide

前言html

安裝和nginx簡介,我是看的視頻,因爲不懂make,make install等編譯命令,因此,我就先講了,很是推薦你們先去看看視頻說nginx是什麼,能作什麼,記下來,再來看官方文檔學習怎麼用。java

因此這裏掠過安裝和介紹,準備好虛擬機,和官方文檔http://nginx.org/en/docs/同步進行學習吧!nginx

先試試服務器能不能跑起來,啓動nginx正則表達式

訪問居然報403了,但看得出來nginx已經啓動,解決方法:https://www.cnblogs.com/haon/p/10959934.html,非403錯誤試着關閉一下防火牆服務器

 如下黑色字爲文檔的我我的的翻譯,我對文檔的學習理解標註爲紅色斜體 表明與文檔無關的內容併發

開始

這篇文檔分爲四節,最後一節先不看了我高併發

  • nginx信號量命令
  • nginx.conf文件結構
  • 如何處理靜態資源
  • 作一個簡單的服務器代理
  • 作一個FastCGI代理(這什麼東東?)

1、信號量命令

熟悉java線程的朋友,應該聽過Semaphore類(我不懂只是大概知道是作線程通訊用的?),不熟悉也沒關係,這裏只要記住這個單詞S開頭和進(線)程通訊就行了,有助於記憶這個命令。學習

命令長這樣ui

四個signal可選spa

  • stop 快速關閉
  • quit 區別於stop的關閉,這個會先把請求處理完再關
  • reload 重載配置文件
  • reopen 重寫日誌文件

ex:nginx -s stop 

文檔只詳細講了reload這個命令,(前置知識你得知道nginx是由一個master進程和多個worker進程組成),master進程收到reload命令後會檢驗和應用配置文件,若是驗證經過,啓動新的worker進程,通知原先的worker關閉,並平滑轉移請求,不然,master進程會回滾繼續用舊配置,而且通知舊的worker中止接受新請求並在處理完當前全部鏈接後關閉

master進程和worker進程,如下簡稱主線程和工做線程

我對這兩個進程是望文生義,主線程應該是負責接收請求的,工做線程負責處理請求,像在SocketServer,當accept()到請求後交給線程池處理。固然現實並不如此,nginx能處理高併發的請求得益於AIO模型,固然這裏我舉的例子只是我猜想兩個進程的地位。

關於如何回滾,這裏並無提到,不知道是否是和kill -usr2同樣的原理。

2、nginx.conf文件配置

講的和我看的安裝視頻差很少,分享給你們

ex:指令塊 {

指令 xxxxx;

指令 xxxxx;

}

介紹了主要的4個代碼塊 

  • events 管理鏈接配置
  • http HTTP服務器配置
  • server 虛擬服務器配置,可能看到後面我才能理解
  • location URI路徑匹配

這四個代碼塊是有嵌套關係的,events和http是頂級代碼塊,server在http裏,location在server裏,結構大體以下

 

 3、處理靜態請求

 這裏就是結合上面的知識對上面的一些配置,指令作個demo應用,跟着作就好了,這裏用到了一個新命令

root:location負責匹配請求路徑,這裏location是優先最長匹配策略,root則是nginx主目錄裏的真實文件夾路徑

ex:

server {
    location / {
        root /data/www;
    }

    location /images/ {
        root /data;
    }
}

若是URL是/images/1.jpg,那麼真實文件得在 安裝目錄/data/images/1.jpg 纔不會報404

我寫的時候遇到一個小問題,覺得指令塊要用分號結尾,指令才須要分號,reload命令的時候,報錯了,改完再reload沒問題。

 

4、設置簡單代理服務器

這裏大概講了三個東西

一、root指令也能夠寫在server下,功能同樣

ex:

server {
    listen 8080;
    root /data/up1;

    location / {
    }
}

二、proxy_pass 指令,配置代理

ex:

server {
    location / {
        proxy_pass http://localhost:8080;
    }

    location /images/ {
        root /data;
    }
}

三、location 接正則表達式

ex:

location ~ \.(gif|jpg|png)$ {
    root /data/images;
}

5、配置FastCGI代理,用不着,先不看

相關文章
相關標籤/搜索