反向代理服務器位於用戶與目標服務器之間,可是對於用戶而言,反向代理服務器就至關於目標服務器,即用戶直接訪問反向代理服務器就能夠得到目標服務器的資源。同時,用戶不須要知道目標服務器的地址,也無須在用戶端做任何設定。反向代理服務器一般可用來做爲Web加速,即便用反向代理做爲Web服務器的前置機來下降網絡和服務器的負載,提升訪問效率。
特色:
1.反向代理服務器是位於用戶和目標服務器之間的.
2.用戶覺得反向代理服務器就是真實的服務器. 用戶不知道真實的服務器究竟是誰.
3.反向代理服務器保護服務端信息,稱之爲服務器端代理.
代理存在的緣由: 用戶因爲某種緣由沒法直接訪問目標服務器,完成指定的功能.java
正向代理,意思是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),而後代理向原始服務器轉交請求並將得到的內容返回給客戶端。客戶端才能使用正向代理。
特色:
1.代理服務器位於用戶與服務器之間
2.用戶請求時,很是明確目標服務器究竟是誰. 服務器不清楚究竟是誰訪問的我.覺得是代理服務器直接發起的請求.
3.正向代理服務器保護了用戶的信息,因此稱之爲客戶端代理.nginx
1.反向代理是服務器端代理. 只要用戶訪問服務器,其實都是反向代理機制. 實現業務調用
2.正向代理是客戶端代理.主要用戶上網就就使用正向代理 實現的是網絡通訊頭 網穿工具 夜神模擬器/花生殼web
Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,在BSD-like 協議下發行。其特色是佔有內存少,併發能力強,事實上nginx的併發能力在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:百度、京東、新浪、網易、騰訊、淘寶等。
特色:
1.佔用內存少 2M tomcat啓動 200M左右
2.併發能力強 5萬/秒 實際2-4萬/秒spring
1).啓動Nginx nginx啓動會生成2個進程項
1.主進程 主要的做用是提供反向代理服務的. 在關閉主進程 內存大的
2.守護進程 防止主進程意外關閉的. 先關閉守護後端
工做目錄說明:要求在nginx.exe所在的根目錄中執行
1.啓動命令
start nginx Linux ./nginx
2.重名命令
nginx -s reload Linux: ./nginx -s reload
3.關閉命令
nginx -s stop Linux: ./nginx -s stoptomcat
入門案例說明: http://localhost:80服務器
實現圖片地址的代理,將圖片地址轉向到具體的磁盤路徑.
URL地址: http://image.jt.com/2020/12/0...
本地磁盤地址:
E:images/2020/12/02/7d7179100d1e423abc2546e77743947c.png網絡
#1.配置圖片代理 server { listen 80; server_name image.jt.com; location / { root E:\images; } }
做用:實現本地域名與IP地址的映射
路徑:
內容:併發
#@SwitchHosts! {"url": null, "icon_idx": 0, "title": "u5f53u524du7cfbu7edf hosts"} # 京淘配置 #192.168.126.129 image.jt.com #192.168.126.129 manage.jt.com #IP 域名 映射關係 127.0.0.1 image.jt.com 127.0.0.1 manage.jt.com 127.0.0.1 www.jt.com 127.0.0.1 sso.jt.com 127.0.0.1 localhost #bug 丟最後一個字母問題
需求:要求用戶經過 http://manage.jt.com 訪問localhost:8091的服務器.
實現方式: 利用反向代理機制實現app
#2.配置後端服務器 manage.jt.com:80 localhost:8091 server { listen 80; server_name manage.jt.com; location / { #發起url請求地址 proxy_pass http://localhost:8091; } }
package com.jt.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class PortController { @Value("${server.port}") private int port; @RequestMapping("/getPort") public String getPort(){ return "當前訪問端口號:"+port; } }
說明:因爲須要準備3臺tomcat服務器. 因此端口號依次8081/8082/8083
cmd項目運行指令:java -jar 8081.war
說明:根據配置文件的順序,依次訪問服務器.
#2.配置後端服務器 manage.jt.com:80 localhost:8091 server { listen 80; server_name manage.jt.com; location / { #發起url請求地址 #proxy_pass http://localhost:8091; proxy_pass http://jtWindows; } } #3.配置tomcat服務器集羣 默認:輪詢策略 upstream jtWindows { server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083; }
說明:讓性能更優的服務器處理更多的用戶請求.
#3.配置tomcat服務器集羣 默認:輪詢策略,2.權重 upstream jtWindows { server 127.0.0.1:8081 weight=6; server 127.0.0.1:8082 weight=3; server 127.0.0.1:8083 weight=1; }
需求:須要將用戶與某臺服務器進行綁定.
#3.配置tomcat服務器集羣 默認:輪詢策略,2.權重,3.iphash upstream jtWindows { ip_hash; server 127.0.0.1:8081 weight=6; server 127.0.0.1:8082 weight=3; server 127.0.0.1:8083 weight=1; }
缺點:
1.容易形成負載不均現象.
2.若是IP地址與用戶綁定在一塊兒,若是tomcat服務器宕機,則直接影響用戶.
IPhash實用場景:通常進行壓力測試時使用.
說明:若是服務器宕機,則能夠經過down屬性進行標識,被標識的服務器則不會再爲用戶提供支持.
#3.配置tomcat服務器集羣 默認:輪詢策略,2.權重,3.iphash upstream jtWindows { #ip_hash; server 127.0.0.1:8081 weight=6 down; server 127.0.0.1:8082 weight=3; server 127.0.0.1:8083 weight=1; }
備用機的設定.通常條件下備用機不幹活的,可是當主機遇忙時,或者主機宕機時,纔會訪問備用機.
#3.配置tomcat服務器集羣 默認:輪詢策略,2.權重,3.iphash upstream jtWindows { #ip_hash; server 127.0.0.1:8081 weight=6 down; server 127.0.0.1:8082 weight=3; server 127.0.0.1:8083 weight=1 backup; }
說明:若是人爲的添加down屬性 效率不高, 可否自動的檢測服務器是否宕機,若是宕機,可否自動的標識爲down.
#3.配置tomcat服務器集羣 默認:輪詢策略,2.權重,3.iphash #max_fails=1設定最大的失敗次數。若是超過最屢次數則表示爲down #fail_timeout=60s 失效的超時時間 60s upstream jtWindows { #ip_hash; server 127.0.0.1:8081 max_fails=1 fail_timeout=60s; server 127.0.0.1:8082 max_fails=1 fail_timeout=60s; server 127.0.0.1:8083 max_fails=1 fail_timeout=60s; }