{eval=Array;=+count(Array);}
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里面即可,完整示例:
在介紹 Nginx 如何做反向代理之前,我先給大家講講什么是反向代理。
正向代理:需要我們知道被代理服務器的 IP 或者域名,即將配置到代理服務器上,然后我們通過訪問代理服務器,最終訪問到目標服務器。
反向代理:我們只需要知道代理服務器的 IP 就可以了,代理服務器根據請求進行跳轉并返回內容,至于最終是哪臺服務器做的處理,我們并不知道。
正向代理:我住在北京,但是想回老家買套房,但是我沒辦法親自回老家考察,于是我就派我的管家回老家考察;管家就是正向代理服務器;正向代理服務器代表了客戶端,在正向代理的過程中,服務端只和代理服務器打交道(房東只和我的管家談),并不知道真正的客戶端是誰。
反向代理:我住在北京,但是想回老家買套房,但是我沒辦法親自回老家考察,于是我打個電話聯系了老家的房屋中介去辦這件事兒;房屋中介就是反向代理;這里的反向代理,代表的是房東,在反向代理的過程中,客戶端只和反向代理服務器打交道,并不知道真正的服務端是誰。
總之,正向代理和客戶端是一伙兒的,隱藏了客戶端,反向代理和服務端是一伙兒的,隱藏了服務端。
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 要和上文對應
}
經過這么幾步簡單的配置,我們就做好了一個反向代理服務器了,當客戶端訪問代理服務器 http://IP/xxx/xxx (接口地址)時,Nginx 就可以將我們的請求分別轉發到 10.130.0.1、10.130.0.2、10.130.0.3 三臺服務器上。
場景描述:
通過域名方式訪問應用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
如果解決了你的疑惑,請點點關注和評論,謝謝大家支持。
正春華枝俏,待秋實果茂,與君共勉。
一 概述
反向代理(Reverse Proxy)方式是指以代理服務器來接受Internet上的連接請求,然后將請求轉發給內部網絡上的服務器;并將從服務器上得到的結果返回給Internet上請求連接的客戶端,此時代理服務器對外就表現為一個服務器。
通常的代理服務器,只用于代理內部網絡對Internet的連接請求,客戶機必須指定代理服務器,并將本來要直接發送到Web服務器上的http請求發送到代理服務器中。當一個代理服務器能夠代理外部網絡上的主機,訪問內部網絡時,這種代理服務的方式稱為反向代理服務。
二 反向代理服務器的工作原理
反向代理服務器通常有兩種模型,它可以作為內容服務器的替身,也可以作為內容服務器集群的負載均衡器。
1,作內容服務器的替身
如果您的內容服務器具有必須保持安全的敏感信息,如信用卡號數據庫,可在防火墻外部設置一個代理服務器作為內容服務器的替身。當外部客戶機嘗試訪問內容服務器時,會將其送到代理服務器。實際內容位于內容服務器上,在防火墻內部受到安全保護。代理服務器位于防火墻外部,在客戶機看來就像是內容服務器。
當客戶機向站點提出請求時,請求將轉到代理服務器。然后,代理服務器通過防火墻中的特定通路,將客戶機的請求發送到內容服務器。內容服務器再通過該通道將結果回傳給代理服務器。代理服務器將檢索到的信息發送給客戶機,好像代理服務器就是實際的內容服務器。如果內容服務器返回錯誤消息,代理服務器會先行截取該消息并更改標頭中列出的任何 URL,然后再將消息發送給客戶機。如此可防止外部客戶機獲取內部內容服務器的重定向 URL。
這樣,代理服務器就在安全數據庫和可能的惡意攻擊之間提供了又一道屏障。與有權訪問整個數據庫的情況相對比,就算是僥幸攻擊成功,作惡者充其量也僅限于訪問單個事務中所涉及的信息。未經授權的用戶無法訪問到真正的內容服務器,因為防火墻通路只允許代理服務器有
4
回答0
回答0
回答0
回答0
回答1
回答0
回答0
回答0
回答5
回答