1. 程式人生 > >nginx正向代理實現受限網站的訪問

nginx正向代理實現受限網站的訪問

反向代理服務器 bin 不能 blog 轉發 http 當我 resolve 操作

項目背景:
公司商務同事需要操作合作方的後臺,但是這個後臺做了限制(安全考慮只對指定IP放行),剛好公司是adsl撥號,經常更換IP

需求:
讓商務同事不要經常給IP到合作方去添加白名單

於是想到了做正向代理代理的方法,關於正向代理和反向代理的區別後面有說明,該場景適合用正向代理

具體操作:
兩種方案:
方案1
將一臺固定外網ip的windows系統添加到客戶網站白名單,開通一個遠程賬號給商務同事,讓他通過遠程桌面操作合作方的後臺

方案2:
將我們的一臺linux服務器做成代理服務器IP添加到合作方的白名單中,以後商務同事就通過這個代理服務器去訪問

具體操作
1.使用新版的nginx,老版本有安全漏洞
# vim /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

2.安裝並配置nginx正向代理
# yum install -y nginx
# cd /etc/nginx/conf.d

# 添加正向代理配置
# vim myproxy.conf
server {
listen 8090;
location / {
resolver 10.10.255.1; # dns地址
proxy_pass $scheme://$http_host$request_uri;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0k;
}
}

3.在需要訪問合作方網站後臺的同事PC上配置瀏覽器代理

技術分享
配置代理前403 forbbinden

技術分享

配置代理後成功訪問

技術分享
關於正向代理和反向代理很形象的解釋:

正向代理

A同學在大眾創業、萬眾創新的大時代背景下開啟他的創業之路,目前他遇到的最大的一個問題就是啟動資金,於是他決定去找馬雲爸爸借錢,可想而知,最後碰一鼻子灰回來了,情急之下,他想到一個辦法,找關系開後門,經過一番消息打探,原來A同學的大學老師王老師是馬雲的同學,於是A同學找到王老師,托王老師幫忙去馬雲那借500萬過來,當然最後事成了。不過馬雲並不知道這錢是A同學借的,馬雲是借給王老師的,最後由王老師轉交給A同學。這裏的王老師在這個過程中扮演了一個非常關鍵的角色,就是代理,也可以說是正向代理,王老師代替A同學辦這件事,這個過程中,真正借錢的人是誰,馬雲是不知道的,這點非常關鍵。

我們常說的代理也就是只正向代理,正向代理的過程,它隱藏了真實的請求客戶端,服務端不知道真實的客戶端是誰,客戶端請求的服務都被代理服務器代替來請求,某些科學上網工具扮演的就是典型的正向代理角色。用瀏覽器訪問 http://www.google.com 時,被殘忍的block,於是你可以在國外搭建一臺代理服務器,讓代理幫我去請求google.com,代理把請求返回的相應結構再返回給我。


反向代理

大家都有過這樣的經歷,撥打10086客服電話,可能一個地區的10086客服有幾個或者幾十個,你永遠都不需要關心在電話那頭的是哪一個,叫什麽,男的,還是女的,漂亮的還是帥氣的,你都不關心,你關心的是你的問題能不能得到專業的解答,你只需要撥通了10086的總機號碼,電話那頭總會有人會回答你,只是有時慢有時快而已。那麽這裏的10086總機號碼就是我們說的反向代理。客戶不知道真正提供服務人的是誰。


反向代理隱藏了真實的服務端,當我們請求 www.baidu.com 的時候,就像撥打10086一樣,背後可能有成千上萬臺服務器為我們服務,但具體是哪一臺,你不知道,也不需要知道,你只需要知道反向代理服務器是誰就好了,www.baidu.com 就是我們的反向代理服務器,反向代理服務器會幫我們把請求轉發到真實的服務器那裏去。Nginx就是性能非常好的反向代理服務器,用來做負載均衡。


兩者的區別在於代理的對象不一樣:正向代理代理的對象是客戶端,反向代理代理的對象是服務端

nginx正向代理實現受限網站的訪問