前言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是頂級代碼塊,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代理,用不着,先不看