{eval=Array;=+count(Array);}
1.nginx介紹
Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理web服務(wù)器,同時(shí)也提供了IMAP/POP3/SMTP服務(wù)。目前最新的版本是1.17.1,最新的穩(wěn)定版本是1.16.0。目前很多很多平臺(tái)都有使用到,像淘寶天貓等,淘寶網(wǎng)還在nginx的基礎(chǔ)上弄了一個(gè)分支Tengine,它在Nginx的基礎(chǔ)上,針對(duì)大訪問(wèn)量網(wǎng)站的需求,添加了很多高級(jí)功能和特性。
2.反代配置
通過(guò)域名/二級(jí)目錄這樣的方式訪問(wèn)這個(gè)應(yīng)用A的8546端口,假如域名為
a.example.com
,A應(yīng)用監(jiān)聽(tīng)localhost:85462.1通過(guò)域名
通過(guò)域名配置只需要配置server_name a.example.com
即可,配置示例如下:
這樣配置就可以通過(guò)域名
a.example.com
訪問(wèn)8546應(yīng)用了。
2.2通過(guò)二級(jí)目錄訪問(wèn)
通過(guò)二級(jí)目錄訪問(wèn)需要注意的是,配置二級(jí)目錄要注意proxy_cookie_path,以前踩過(guò)很多坑。假設(shè)要訪問(wèn)的二級(jí)目錄為
a.example.com/test/,配置示例如下:
這樣就可以通過(guò)http://a.example.com/test/
訪問(wèn)了。
注:示例配置都只寫(xiě)了server部分,將servern放在http里面即可,完整示例:
在介紹 Nginx 如何做反向代理之前,我先給大家講講什么是反向代理。
正向代理:需要我們知道被代理服務(wù)器的 IP 或者域名,即將配置到代理服務(wù)器上,然后我們通過(guò)訪問(wèn)代理服務(wù)器,最終訪問(wèn)到目標(biāo)服務(wù)器。
反向代理:我們只需要知道代理服務(wù)器的 IP 就可以了,代理服務(wù)器根據(jù)請(qǐng)求進(jìn)行跳轉(zhuǎn)并返回內(nèi)容,至于最終是哪臺(tái)服務(wù)器做的處理,我們并不知道。
正向代理:我住在北京,但是想回老家買(mǎi)套房,但是我沒(méi)辦法親自回老家考察,于是我就派我的管家回老家考察;管家就是正向代理服務(wù)器;正向代理服務(wù)器代表了客戶(hù)端,在正向代理的過(guò)程中,服務(wù)端只和代理服務(wù)器打交道(房東只和我的管家談),并不知道真正的客戶(hù)端是誰(shuí)。
反向代理:我住在北京,但是想回老家買(mǎi)套房,但是我沒(méi)辦法親自回老家考察,于是我打個(gè)電話聯(lián)系了老家的房屋中介去辦這件事兒;房屋中介就是反向代理;這里的反向代理,代表的是房東,在反向代理的過(guò)程中,客戶(hù)端只和反向代理服務(wù)器打交道,并不知道真正的服務(wù)端是誰(shuí)。
總之,正向代理和客戶(hù)端是一伙兒的,隱藏了客戶(hù)端,反向代理和服務(wù)端是一伙兒的,隱藏了服務(wù)端。
Nginx 就是一個(gè)開(kāi)源的、高性能的、可靠的 Http 中間件;它經(jīng)常被用作 Http 代理、反向代理、負(fù)載均衡等等。
使用 Nginx 做反向代理也特別的簡(jiǎn)單,我們下載并安裝好 Nginx 之后,只需要在其配置文件 nginx.conf 中配置代理的目標(biāo)服務(wù)器的地址即可。
3.1 比如我們有三臺(tái)應(yīng)用服務(wù)器分別是:
10.130.0.1:8080
10.130.0.2:8080
10.130.0.3:8080
3.2 那么在配置文件中的 http 中增加 upstream,并配置三臺(tái)環(huán)境的地址;
#增加 upstream 的配置,其中 myserver 是自己起的名字
upstream myserver{
server 10.130.0.1:8080; #有幾套環(huán)境,就配置幾條
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 要和上文對(duì)應(yīng)
}
經(jīng)過(guò)這么幾步簡(jiǎn)單的配置,我們就做好了一個(gè)反向代理服務(wù)器了,當(dāng)客戶(hù)端訪問(wèn)代理服務(wù)器 http://IP/xxx/xxx (接口地址)時(shí),Nginx 就可以將我們的請(qǐng)求分別轉(zhuǎn)發(fā)到 10.130.0.1、10.130.0.2、10.130.0.3 三臺(tái)服務(wù)器上。
場(chǎng)景描述:
通過(guò)域名方式訪問(wèn)應(yīng)用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;
}
}
訪問(wèn)路徑:http://nginx_domain
場(chǎng)景描述:
通過(guò)二級(jí)目錄的方式訪問(wèn)應(yīng)用A的8546端口。
解決方案:
使用nginx反向代理,配置如下:
upstream backend{
ip_hash;
server backend.example.com:8546;
}
server {
listen 80;
server_name localhost nginx_ip;
#其他路徑默認(rèn)訪問(wèn)
location / {
root /nginx/www;
index index.php index.html index.htm;
}
#通過(guò)訪問(wèn)service二級(jí)目錄訪問(wèn)
location ^~ /service{
proxy_pass http://backend/service;
proxy_redirect off;
proxy_set_header Host $host;
}
}
訪問(wèn)路徑:http://nginx_ip/service
如果解決了你的疑惑,請(qǐng)點(diǎn)點(diǎn)關(guān)注和評(píng)論,謝謝大家支持。
正春華枝俏,待秋實(shí)果茂,與君共勉。
一 概述
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來(lái)接受Internet上的連接請(qǐng)求,然后將請(qǐng)求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器;并將從服務(wù)器上得到的結(jié)果返回給Internet上請(qǐng)求連接的客戶(hù)端,此時(shí)代理服務(wù)器對(duì)外就表現(xiàn)為一個(gè)服務(wù)器。
通常的代理服務(wù)器,只用于代理內(nèi)部網(wǎng)絡(luò)對(duì)Internet的連接請(qǐng)求,客戶(hù)機(jī)必須指定代理服務(wù)器,并將本來(lái)要直接發(fā)送到Web服務(wù)器上的http請(qǐng)求發(fā)送到代理服務(wù)器中。當(dāng)一個(gè)代理服務(wù)器能夠代理外部網(wǎng)絡(luò)上的主機(jī),訪問(wèn)內(nèi)部網(wǎng)絡(luò)時(shí),這種代理服務(wù)的方式稱(chēng)為反向代理服務(wù)。
二 反向代理服務(wù)器的工作原理
反向代理服務(wù)器通常有兩種模型,它可以作為內(nèi)容服務(wù)器的替身,也可以作為內(nèi)容服務(wù)器集群的負(fù)載均衡器。
1,作內(nèi)容服務(wù)器的替身
如果您的內(nèi)容服務(wù)器具有必須保持安全的敏感信息,如信用卡號(hào)數(shù)據(jù)庫(kù),可在防火墻外部設(shè)置一個(gè)代理服務(wù)器作為內(nèi)容服務(wù)器的替身。當(dāng)外部客戶(hù)機(jī)嘗試訪問(wèn)內(nèi)容服務(wù)器時(shí),會(huì)將其送到代理服務(wù)器。實(shí)際內(nèi)容位于內(nèi)容服務(wù)器上,在防火墻內(nèi)部受到安全保護(hù)。代理服務(wù)器位于防火墻外部,在客戶(hù)機(jī)看來(lái)就像是內(nèi)容服務(wù)器。
當(dāng)客戶(hù)機(jī)向站點(diǎn)提出請(qǐng)求時(shí),請(qǐng)求將轉(zhuǎn)到代理服務(wù)器。然后,代理服務(wù)器通過(guò)防火墻中的特定通路,將客戶(hù)機(jī)的請(qǐng)求發(fā)送到內(nèi)容服務(wù)器。內(nèi)容服務(wù)器再通過(guò)該通道將結(jié)果回傳給代理服務(wù)器。代理服務(wù)器將檢索到的信息發(fā)送給客戶(hù)機(jī),好像代理服務(wù)器就是實(shí)際的內(nèi)容服務(wù)器。如果內(nèi)容服務(wù)器返回錯(cuò)誤消息,代理服務(wù)器會(huì)先行截取該消息并更改標(biāo)頭中列出的任何 URL,然后再將消息發(fā)送給客戶(hù)機(jī)。如此可防止外部客戶(hù)機(jī)獲取內(nèi)部?jī)?nèi)容服務(wù)器的重定向 URL。
這樣,代理服務(wù)器就在安全數(shù)據(jù)庫(kù)和可能的惡意攻擊之間提供了又一道屏障。與有權(quán)訪問(wèn)整個(gè)數(shù)據(jù)庫(kù)的情況相對(duì)比,就算是僥幸攻擊成功,作惡者充其量也僅限于訪問(wèn)單個(gè)事務(wù)中所涉及的信息。未經(jīng)授權(quán)的用戶(hù)無(wú)法訪問(wèn)到真正的內(nèi)容服務(wù)器,因?yàn)榉阑饓ν分辉试S代理服務(wù)器有
4
回答0
回答0
回答0
回答0
回答1
回答0
回答0
回答0
回答5
回答