Nginx實現(xiàn)反向代理全過程
1 Nginx介紹
Nginx (engine x) 是一個高性能的HTTP和反向代理web服務(wù)器,同時也提供了IMAP/POP3/SMTP服務(wù)。Nginx是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的Rambler.ru站點(俄文:Рамблер)開發(fā)的,第一個公開版本0.1.0發(fā)布于2004年10月4日。
其將源代碼以類BSD許可證的形式發(fā)布,因它的穩(wěn)定性、豐富的功能集、示例配置文件和低系統(tǒng)資源的消耗而聞名。2011年6月1日,nginx 1.0.4發(fā)布。
Nginx是一款輕量級的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like 協(xié)議下發(fā)行。其特點是占有內(nèi)存少,并發(fā)能力強,事實上nginx的并發(fā)能力在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,中國大陸使用nginx網(wǎng)站用戶有:百度、京東、新浪、網(wǎng)易、騰訊、淘寶等。
特點:
1.占用內(nèi)存少 tomcat服務(wù)器啟動200M Nginx服務(wù)器啟動時 2M
2.并發(fā)能力強 tomcat并發(fā)能力150-200左右 Nginx并發(fā)能力 3-5萬/秒
3.Nginx主要的功能做反向代理
4.Nginx可以作為負載均衡服務(wù)器使用
2 關(guān)于圖片回顯業(yè)務(wù)說明
網(wǎng)絡(luò)虛擬地址:http://image.jt.com/2021/01/26/60f84beee9914853804cfb90897530bb.png
真實的磁盤地址:E:\JT_IMAGE\2021\01\26\1b0e435933ac42cabec53b20ffbcfe90.png
說明:由于某些原因,用戶無法直接訪問圖片服務(wù)器.需要一個代理進行中轉(zhuǎn).

3 反向代理
3.1 概念
反向代理服務(wù)器位于用戶與目標(biāo)服務(wù)器之間,但是對于用戶而言,反向代理服務(wù)器就相當(dāng)于目標(biāo)服務(wù)器,即用戶直接訪問反向代理服務(wù)器就可以獲得目標(biāo)服務(wù)器的資源。同時,用戶不需要知道目標(biāo)服務(wù)器的地址,也無須在用戶端作任何設(shè)定。反向代理服務(wù)器通常可用來作為Web加速,即使用反向代理作為Web服務(wù)器的前置機來降低網(wǎng)絡(luò)和服務(wù)器的負載,提高訪問效率
3.2 特點
1.反向代理服務(wù)器是介于用戶和服務(wù)器之間的
2.用戶直接訪問代理服務(wù)器,以為代理服務(wù)器就是真實的服務(wù)器.
3.用戶不清楚真實的服務(wù)器到底是誰.
4.反向代理是服務(wù)器端代理.保護了真實的服務(wù)器信息.
5.反向代理主要的作用 訪問服務(wù)器獲得服務(wù)器數(shù)據(jù)的.

4 正向代理
4.1 說明
正向代理,意思是一個位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端??蛻舳瞬拍苁褂谜虼怼?/p>
4.2 特點
1.正向代理服務(wù)器介于用戶和目標(biāo)服務(wù)器之間
2.用戶非常清楚的知道服務(wù)器網(wǎng)址是誰.
3.服務(wù)器端不清楚真實的用戶是誰.
4.正向代理一般都是客戶端代理.保護了用戶的信息.
5.正向代理一般都是為了獲取網(wǎng)絡(luò)資源.例如路由器

5 關(guān)于正向/反向代理說明

6 運行Nginx
以管理員身份運行時只執(zhí)行一次. 注意事項: 占用80端口

運行測試

7 Nginx進程項相關(guān)說明
說明: 每次啟動nginx服務(wù)器時,都會啟動2個進程項.一個是守護進程/一個是主進程
守護進程: 防止主進程意外關(guān)閉的. 內(nèi)存小的
主進程: 主要提供反向代理服務(wù). 內(nèi)存大的

8 Nginx命令
說明: nginx的命令要求在nginx.exe所在的目錄中執(zhí)行.
1).啟動命令 start nginx
2).重啟命令 nginx -s reload
3).關(guān)閉命令 nginx -s stop
9 Nginx反向代理入門案例

D:\JavaDevelop\nginx-1.15.10\conf\nginx.conf
http {
#每個服務(wù)都是一個server
server {
listen 80; #如果沒有特殊的要求監(jiān)聽的都是80!!!
server_name localhost;
#開始進行反向代理
location / {
#html是一個相對路徑的寫法
root html ;
index index.html;
}
}
}
10 利用Nginx實現(xiàn)圖片代理
1 業(yè)務(wù)分析
虛擬網(wǎng)絡(luò)地址: http://image.jt.com/2021/01/27/43fdd159f0f74212927447ccbe85c951.png
本地磁盤地址: E:\JT_IMAGE\2021\01\27\43fdd159f0f74212927447ccbe85c951.png
核心: 需要將http://image.jt.com 利用Nginx服務(wù)器反向代理到E:\JT_IMAGE

2 HOSTS文件介紹
作用: 在本機可以實現(xiàn)域名與IP地址的映射關(guān)系
位置: C:\Windows\System32\drivers\etc

3 關(guān)于switchHosts軟件說明
可以用來編輯hosts文件

4 修改hosts文件

5 修改nginx配置文件實現(xiàn)圖片回顯
重啟nginx服務(wù)器.

11 實現(xiàn)域名代理
1 需求
要求用戶通過http://manage.jt.com的方式訪問 http://localhost:8091的服務(wù)器.
2 步驟
1).修改hosts文件

2).修改nginx配置文件 實現(xiàn)域名代理

3).頁面效果展現(xiàn)

12 tomcat集群搭建
1tomcat集群搭建

2 搭建步驟
2.1 修改端口號

2.2 項目打包

2.3 項目tomcat準備

2.4 動態(tài)獲取tomcat端口號
@RestController
public class PortController {
//動態(tài)獲取當(dāng)前端口號信息
@Value("${server.port}")
private Integer port;
@RequestMapping("/port")
public String getPort(){
return "當(dāng)前端口號:"+port;
}
}
2.5 項目tomcat發(fā)布

3 Nginx實現(xiàn)負載均衡
3.0 關(guān)于nginx啟動說明

3.1 輪詢策略
說明: 根據(jù)配置文件中的順序,依次訪問tomcat服務(wù)器.
配置: 修改nginx之后重啟nginx服務(wù)器
#配置域名代理
server {
listen 80;
server_name manage.jt.com;
location / {
#代理 服務(wù)器訪問地址
#proxy_pass http://localhost:8091;
proxy_pass http://jtWindows;
}
}
#構(gòu)建tomcat服務(wù)器集群
#默認規(guī)則: 輪詢策略
upstream jtWindows {
server localhost:8081;
server localhost:8082;
server localhost:8083;
}
3.2 權(quán)重策略
說明: 由于公司內(nèi)部物理服務(wù)器的處理能力可能有高有低.,所以需要讓高性能的服務(wù)器處理更多的請求. 采用權(quán)重的策略配置:

3.3 IPHASH策略
需求: 在線考試為例. 小李完成考試 馬上要寫完了.這時電腦宕機.重啟之后小李發(fā)現(xiàn)剛才做的題目沒有保存,需要重做? 小李很崩潰 問軟件應(yīng)該如何優(yōu)化??
提示: 小李訪問的服務(wù)器是剛才的嗎?
解決方案:
1).可以讓用戶與服務(wù)器進行綁定
2).將用戶的考試信息保存到第三方.之后無論從哪臺服務(wù)器獲取都是相同的結(jié)果.
IPHAHS算法:


4 關(guān)于nginx高級屬性說明
4.1 down屬性
說明: 如果nginx集中添加down屬性 則標(biāo)識nginx服務(wù)器不會再將請求,發(fā)給該服務(wù)器.

4.2 backup屬性
說明:該屬性用來標(biāo)識備用機,正常的情況下 用戶不會再次訪問備用,除非當(dāng)前服務(wù)器遇忙/當(dāng)前服務(wù)器宕機.才有可能訪問備用機.

4.3 Nginx實現(xiàn)tomcat服務(wù)器高可用
高可用(HA)說明: 當(dāng)服務(wù)器發(fā)生故障時,無需人為的干預(yù),可以自動化的實現(xiàn)故障的遷移。
說明: 如果發(fā)現(xiàn)服務(wù)器宕機如果由人工來完成 效率較低. 可以通過程序自動完成。

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
nginx訪問日志并刪除指定天數(shù)前的日志記錄配置方法
這篇文章主要介紹了nginx訪問日志并刪除指定天數(shù)前的日志記錄配置方法,需要的朋友可以參考下2014-03-03

