1、nginx安裝
dnf install nginx -y
2、nginx常用目錄
nginx.conf目錄:/etc/nginx.nginx.conf
nginx啟動目錄:/usr/sbin/nginx
3、nginx熱部署
所謂熱部署,就是配置文件nginx.conf修改后,不需要stop Nginx,不需要中斷請求,就能讓配置文件生效!
/usr/sbin/nginx -s reload
4、配置nginx 訪問資源目錄
修改 nginx.conf 配置文件,在service標簽內部加入下面的location,通過訪問 ip地址:端口/source 就能訪問 /home/source 目錄了。
location /source { root /home; autoindex:on; }
還可以有如下寫法:
location /source { alias /home/source; autoindex:on; }
5、反向代理
聽着反向代理是不是很牛逼的事,實際上很容易理解:
正向代理:A要訪問C的地址,但是由於網絡或是牆的問題,A不能直接訪問到C,但是呢有個B可以訪問C,A也可以訪問B,那么A在訪問C的時候通過B代理,這就是正向代理。
A ---/---> C ; A ------> B ; B ------> C ;那么 A ------> B ------> C
反向代理:A要訪問C的地址,但是由於網絡或安全的問題,A不能直接訪問到C,但是呢有個B可以訪問C,A也可以訪問B,那么A在訪問C的時候通過B代理,這就是正向代理。
A ---/---> C ; A ------> B ; B ------> C ;那么 A ------> B ------> C
通過上面的示例是不是覺得 正向代理和反向代理一樣?
對,確實原理一樣,但是有有個明顯的差別就是:
在正向代理中 A訪問C,A是明確知道C的地址(要想訪問www.google.com)。B相當於是訪問的介質。
在反向代理中A訪問C,A只知道B的地址不知道C的地址,當A訪問B的時候由B請求C之后把請求結果返回給A。
配置方法很簡單:把root換成proxy_pass , 路徑換成網絡地址。
location /WeChatApp { proxy_pass http://localhost:8878/; }
6、負載均衡
復制均衡聽着是不是也很NB,其實原理也非常簡單,因為由反向代理,A只用訪問B就行了,那么至於B要訪問多少個C那是可以配置的:
比如說 由於用戶量激增,需要新增服務器來部署應用應對並發訪問,這時用戶訪問的還是B地址,只有配置B把請求分發給對台服務器應用,就能應對並發操作,這就是負載均衡。
在server標簽外面添加:
upstream myserver{ server http://192.168.1.40:8080; server http://192.168.1.45:8480; }
在server標簽內添加:
location /WeChatApp { proxy_pass http://myserver; }
這樣就把請求分發到不同的應用去處理了。
7、動靜分離
牛逼的名稱又來了,動靜分離就是把通過反向代理,針對不同的資源配置不同的訪問方式。
比如說查詢用戶列表需要查詢數據庫,需要組織返回的數據結構,這就是一個動態請求。
比如要訪問圖片、pdf文件...這些靜態資源這一個靜態請求。
那么針對不同的接口做不同的配置就實現了動靜分離:
# 訪問 動態資源 location /WeChatApp { proxy_pass http://localhost:8878/; } #訪問 /home/image 靜態資源目錄 location /image { root /home; autoindex:on; }
8、高可用的集群
通過nginx做代理 進行負載均衡就會出現一個問題,就是nginx服務器掛掉之后,它代理的接口地址都不能訪問了。
為了解決這個問題就需要配置一個高可以的集群,原理很簡單,就是在另一台服務器其上部署一個相同配置的nginx服務器,這樣主nginx服務器掛掉之后,副的nginx服務器補上。
主流方案是Keepalived+Nginx實現雙機熱備。
