1. 正向代理與反向代理的概念:
請參見之前的一片文章《Nginx基本功能及其原理》,理解什么是正向代理和反向代理服務(wù)。
理解這兩個(gè)概念的關(guān)鍵是要明白我們要讓服務(wù)器充當(dāng)?shù)慕巧湍康氖鞘裁矗?/p>
- 在正向代理服務(wù)器中,充當(dāng)?shù)慕巧强蛻舳耍茖W(xué)上網(wǎng)軟件服務(wù)器充當(dāng)?shù)钠鋵?shí)就是正向代理),目的是訪問外網(wǎng)的資源
- 在反向代理服務(wù)器中,充當(dāng)?shù)慕巧钦军c(diǎn),目的是把站點(diǎn)的資源發(fā)布出去讓其他客戶端能夠訪問
2. nginx服務(wù)器正向代理服務(wù)
使用Nginx服務(wù)器代理服務(wù)功能的情況相對反向代理要少一些,涉及的主要指令不多,一般在搭建nginx正向代理時(shí)單獨(dú)配置一個(gè)server塊來進(jìn)行配置。
2.1 resolver指令:
該指令指定DNS服務(wù)器的IP地址。DNS服務(wù)器的主要功能是進(jìn)行域名解析,將域名映射為對應(yīng)的IP地址。語法結(jié)構(gòu):
resolver address ...[valid=time];
- address,DNS服務(wù)器的IP地址。如果不指定端口,默認(rèn)使用53;
- time,設(shè)置數(shù)據(jù)包在網(wǎng)絡(luò)中的有效時(shí)間。
使用該指令的一個(gè)例子如下:
resolver 127.0.0.1 [::1]:5353 valid=30s;
在實(shí)際應(yīng)用中,一般不需要設(shè)置這么復(fù)雜,只要將DNS服務(wù)器的IP地址設(shè)置好即可。
2.2 resolver_timeout指令:
該指令用于設(shè)置DNS服務(wù)器域名解析的超時(shí)時(shí)間,語法結(jié)構(gòu):
resolver_timeout time;
2.3 proxy_pass指令:
該指令用于設(shè)置代理服務(wù)器的協(xié)議和地址,它不僅僅用于Nginx服務(wù)器的正向代理,更多的應(yīng)用用于反向代理。語法結(jié)構(gòu):
proxy_pass URL;
- URL,要設(shè)置的正向代理服務(wù)器的協(xié)議和地址;
該指令的用法相對固定:
proxy_pass http://$http_host$request_uri;
其中,代理服務(wù)器的協(xié)議為HTTP,request_uri分別用于自動獲取主機(jī)和URI。
3. Nginx做正向代理的例子
...
server {
# 設(shè)置DNS服務(wù)器IP地址為8.8.8.8,默認(rèn)使用53端口
resolver 8.8.8.8;
# 代理服務(wù)監(jiān)聽82端口
listen 82;
# nginx接收的所有請求都由location塊進(jìn)行過濾處理
location / {
proxy_pass http://$http_host$request_uri;
}
}
...
注意:Nginx正向代理不支持HTTPS協(xié)議的站點(diǎn)。。。