-
1 # 雲渺書齋
-
2 # 會點程式碼的大叔
在介紹 Nginx 如何做反向代理之前,我先給大家講講什麼是反向代理。
01 正向代理 VS 反向代理正向代理:需要我們知道被代理伺服器的 IP 或者域名,即將配置到代理伺服器上,然後我們通過訪問代理伺服器,最終訪問到目標伺服器。
反向代理:我們只需要知道代理伺服器的 IP 就可以了,代理伺服器根據請求進行跳轉並返回內容,至於最終是哪臺伺服器做的處理,我們並不知道。
02 舉個例子正向代理:我住在北京,但是想回老家買套房,但是我沒辦法親自回老家考察,於是我就派我的管家回老家考察;管家就是正向代理伺服器;正向代理伺服器代表了客戶端,在正向代理的過程中,服務端只和代理伺服器打交道(房東只和我的管家談),並不知道真正的客戶端是誰。
反向代理:我住在北京,但是想回老家買套房,但是我沒辦法親自回老家考察,於是我打個電話聯絡了老家的房屋中介去辦這件事兒;房屋中介就是反向代理;這裡的反向代理,代表的是房東,在反向代理的過程中,客戶端只和反向代理伺服器打交道,並不知道真正的服務端是誰。
總之,正向代理和客戶端是一夥兒的,隱藏了客戶端,反向代理和服務端是一夥兒的,隱藏了服務端。
03. 使用 Nginx 實現反向代理Nginx 就是一個開源的、高效能的、可靠的 Http 中介軟體;它經常被用作 Http 代理、反向代理、負載均衡等等。
使用 Nginx 做反向代理也特別的簡單,我們下載並安裝好 Nginx 之後,只需要在其配置檔案 nginx.conf 中配置代理的目標伺服器的地址即可。
3.1 比如我們有三臺應用伺服器分別是:
10.130.0.1:8080
10.130.0.2:8080
10.130.0.3:8080
3.2 那麼在配置檔案中的 http 中增加 upstream,並配置三臺環境的地址;
#增加 upstream 的配置,其中 myserver 是自己起的名字
upstream myserver{
server 10.130.0.1:8080; #有幾套環境,就配置幾條
server 10.130.0.2:8080;
server 10.130.0.3:8080;
}
3.3 並在 http.server.location 中增加 proxy_pass 的配置;
location / {
root html;
index index.html index.htm;
proxy_pass http://myserver; #增加,其中 http://myserver 的 myserver 要和上文對應
}
-
3 # 紅樓資訊
1.nginx介紹
Nginx (engine x) 是一個高效能的HTTP和反向代理web伺服器,同時也提供了IMAP/POP3/SMTP服務。目前最新的版本是1.17.1,最新的穩定版本是1.16.0。目前很多很多平臺都有使用到,像淘寶天貓等,淘寶網還在nginx的基礎上弄了一個分支Tengine,它在Nginx的基礎上,針對大訪問量網站的需求,添加了很多高階功能和特性。
2.反代配置
通過域名/二級目錄這樣的方式訪問這個應用A的8546埠,假如域名為
a.example.com
,A應用監聽localhost:85462.1通過域名
通過域名配置只需要配置server_name a.example.com
即可,配置示例如下:
這樣配置就可以通過域名
a.example.com
訪問8546應用了。
2.2通過二級目錄訪問
通過二級目錄訪問需要注意的是,配置二級目錄要注意proxy_cookie_path,以前踩過很多坑。假設要訪問的二級目錄為
a.example.com/test/,配置示例如下:
這樣就可以通過http://a.example.com/test/
訪問了。
注:示例配置都只寫了server部分,將servern放在http裡面即可,完整示例:
-
4 # 程式猿陌小江
一 概述
反向代理(Reverse Proxy)方式是指以代理伺服器來接受Internet上的連線請求,然後將請求轉發給內部網路上的伺服器;並將從伺服器上得到的結果返回給Internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。
通常的代理伺服器,只用於代理內部網路對Internet的連線請求,客戶機必須指定代理伺服器,並將本來要直接傳送到Web伺服器上的http請求傳送到代理伺服器中。當一個代理伺服器能夠代理外部網路上的主機,訪問內部網路時,這種代理服務的方式稱為反向代理服務。
二 反向代理伺服器的工作原理
反向代理伺服器通常有兩種模型,它可以作為內容伺服器的替身,也可以作為內容伺服器叢集的負載均衡器。
1,作內容伺服器的替身
如果您的內容伺服器具有必須保持安全的敏感資訊,如信用卡號資料庫,可在防火牆外部設定一個代理伺服器作為內容伺服器的替身。當外部客戶機嘗試訪問內容伺服器時,會將其送到代理伺服器。實際內容位於內容伺服器上,在防火牆內部受到安全保護。代理伺服器位於防火牆外部,在客戶機看來就像是內容伺服器。
當客戶機向站點提出請求時,請求將轉到代理伺服器。然後,代理伺服器通過防火牆中的特定通路,將客戶機的請求傳送到內容伺服器。內容伺服器再通過該通道將結果回傳給代理伺服器。代理伺服器將檢索到的資訊傳送給客戶機,好像代理伺服器就是實際的內容伺服器。如果內容伺服器返回錯誤訊息,代理伺服器會先行擷取該訊息並更改標頭中列出的任何 URL,然後再將訊息傳送給客戶機。如此可防止外部客戶機獲取內部內容伺服器的重定向 URL。
這樣,代理伺服器就在安全資料庫和可能的惡意攻擊之間提供了又一道屏障。與有權訪問整個資料庫的情況相對比,就算是僥倖攻擊成功,作惡者充其量也僅限於訪問單個事務中所涉及的資訊。未經授權的使用者無法訪問到真正的內容伺服器,因為防火牆通路只允許代理伺服器有
回覆列表
域名方式
場景描述:
通過域名方式訪問應用A的8546埠。
解決方案:
使用nginx反向代理,配置如下:
upstream backend{
ip_hash;
server backend.example.com:8546;
}
server {
listen 80;
server_name localhost nginx_domain; location / { proxy_pass http://backend;
proxy_redirect off; }
}
訪問路徑:http://nginx_domain
二級目錄方式場景描述:
通過二級目錄的方式訪問應用A的8546埠。
解決方案:
使用nginx反向代理,配置如下:
upstream backend{
ip_hash;
server backend.example.com:8546;
}
server {
listen 80;
server_name localhost nginx_ip; #其他路徑預設訪問
location / { root /nginx/www; index index.php index.html index.htm; }
#通過訪問service二級目錄訪問
location ^~ /service{ proxy_pass http://backend/service; proxy_redirect off; proxy_set_header Host $host; }
}
訪問路徑:http://nginx_ip/service
正春華枝俏,待秋實果茂,與君共勉。