1、反向代理
反向代理準備工做:html
實現效果1:使用 nginx 反向代理,訪問 www.tomcatServers.com 直接跳轉到 49.234.111.11:8080(虛擬機的tomcat地址)linux
一、實驗代碼
1) 啓動一個 tomcat,瀏覽器地址欄輸入 127.0.0.1:8080,出現以下界面nginx

2)訪問過程的分析

3) 經過修改本地 host 文件,將 www.tomcatServers.com 映射到 127.0.0.1

配置完成以後,咱們即可以經過 www.tomcatServers.com:8080 訪問到第一步出現的 Tomcat 初始界面。那麼如何只須要輸入
www.tomcatServers.com 即可以跳轉到 Tomcat 初始界面呢?便用到 nginx的反向代理。
添加內容在host 文件中:
192.168.17.129 www.
tomcatServers.com
注:前者是代理服務地址,後者是暴露在外的訪問地址
4) 在 nginx.conf 配置文件中增長以下配置

如上配置,咱們監聽 80 端口,訪問域名爲 www.tomcatServers.com,不加端口號時默認爲 80 端口,故
訪問該域名時會跳轉到 127.0.0.1:8080 路徑上。在瀏覽器端輸入 www.tomcatServers.com 結果以下:
5)最終測試:

實驗效果2 :git
使用 nginx 反向代理,根據訪問的路徑跳轉到不一樣端口的服務中
nginx 監聽端口爲 9001,
訪問 http://192.168.17.129:9001/edu/ 直接跳轉到 127.0.0.1:8080
訪問 http:// 192.168.17.129:9001/vod/ 直接跳轉到 127.0.0.1:8081
2.1 、實驗代碼github
第一步,準備兩個 tomcat,一個 8001 端口,一個 8002 端口,並準備好測試的頁面
在tomcat的webapps目錄下建立edu目錄,並建立測試頁面
第二步,具體配置
(1)找到 nginx 配置文件,進行反向代理配置
在 http 塊中添加 server{}

location 指令說明 web
該指令用於匹配 URL。 正則表達式
語法以下:windows

- = :用於不含正則表達式的 uri 前,要求請求字符串與 uri 嚴格匹配,若是匹配成功,就中止繼續向下搜索並當即處理該請求。
- ~:用於表示 uri 包含正則表達式,而且區分大小寫。
- ~*:用於表示 uri 包含正則表達式,而且不區分大小寫。
- ^~:用於不含正則表達式的 uri 前,要求 Nginx 服務器找到標識 uri 和請求字 符串匹配度最高的 location 後,當即使用此 location 處理請求,而再也不使用 location 塊中的正則 uri 和請求字符串作匹配。
注意:若是 uri 包含正則表達式,則必需要有 ~ 或者 ~* 標識。後端
(2)開放對外訪問的端口號 9001 8080 8081
4、最終測試


解析:瀏覽器

2、nginx 配置實例-負載均衡
1、實現效果
(1)瀏覽器地址欄輸入地址 http://192.168.17.129/edu/a.html,負載均衡效果,平均 8080和 8081 端口中
2、準備工做
(1)準備兩臺 tomcat 服務器,一臺 8080,一臺 8081
(2)在兩臺 tomcat 裏面 webapps 目錄中,建立名稱是 edu 文件夾,在 edu 文件夾中建立頁面 a.html,用於測試
3、在 nginx 的配置文件中進行負載均衡的配置


4、nginx 分配服務器策略
隨着互聯網信息的爆炸性增加,負載均衡(load balance)已經再也不是一個很陌生的話題,
顧名思義,負載均衡便是將負載分攤到不一樣的服務單元,既保證服務的可用性,又保證響應
足夠快,給用戶很好的體驗。快速增加的訪問量和數據流量催生了各式各樣的負載均衡產品,
不少專業的負載均衡硬件提供了很好的功能,但卻價格不菲,這使得負載均衡軟件大受歡迎,
nginx 就是其中的一個,在 linux 下有 Nginx、LVS、Haproxy 等等服務能夠提供負載均衡服
務,並且 Nginx 提供了幾種分配方式(策略):
4.1、輪詢(默認)
每一個請求按時間順序逐一分配到不一樣的後端服務器,若是後端服務器 down 掉,能自動剔除。
4.2、weight
weight 表明權,重默認爲 1,權重越高被分配的客戶端越多
指定輪詢概率,weight 和訪問比率成正比,用於後端服務器性能不均的狀況。 例如
4.3、ip_hash
每一個請求按訪問 ip 的 hash 結果分配,這樣每一個訪客固定訪問一個後端服務器,能夠解決 session 的問題。
例如:
4.
4、fair(第三方)
按後端服務器的響應時間來分配請求,響應時間短的優先分配。
Nginx 動靜分離簡單來講就是把動態跟靜態請求分開,不能理解成只是單純的把動態頁面和靜態頁面物理分離。嚴格意義上說應該是動態請求跟靜態請求分開,能夠理解成使用 Nginx 處理靜態頁面,Tomcat 處理動態頁面。動靜分離從目前實現角度來說大體分爲兩種,一種是純粹把靜態文件獨立成單獨的域名,放在獨立的服務器上,也是目前主流推崇的方案;另一種方法就是動態跟靜態文件混合在一塊兒發佈,經過 nginx 來分開。

經過 location 指定不一樣的後綴名實現不一樣的請求轉發。經過 expires 參數設置,可使瀏覽器緩存過時時間,減小與服務器以前的請求和流量。具體 Expires 定義:是給一個資源設定一個過時時間,也就是說無需去服務端驗證,直接經過瀏覽器自身確認是否過時便可,因此不會產生額外的流量。此種方法很是適合不常常變更的資源。(若是常常更新的文件,不建議使用 Expires 來緩存),我這裏設置 3d,表示在這 3 天以內訪問這個 URL,發送一個請求,比對服務器該文件最後更新時間沒有變化,則不會從服務器抓取,返回狀態碼304,若是有修改,則直接從服務器從新下載,返回狀態碼 200。
1、準備工做
在 liunx 系統中準備靜態資源,用於進行訪問

- 在 image 目錄下上傳一張圖片做爲靜態資源
- 在 www 目錄下建立一個 a.html 頁面做爲動態資源
2、具體配置
(1)在 nginx 配置文件中進行配置

- 添加監聽端口、訪問名字
- 重點是添加 location,
- 最後檢查 Nginx 配置是否正確便可,而後測試動靜分離是否成功,之須要刪除後端 tomcat服務器上的某個靜態文件,查看是否能訪問,若是能夠訪問說明靜態資源 nginx 直接返回了,不走後端 tomcat 服務器
3、最終測試
(1)瀏覽器中輸入地址
http://192.168.17.129/image/01.jpg

* 由於配置文件 autoindex on

(2)在瀏覽器地址欄輸入地址
http://192.168.17.129/www/a.html
