什么是反向代理?用Nginx如何實現簡單反向代理?


 

反向代理,這個詞相信搞網絡的朋友都很熟悉的,但是具體是什么意思呢?說實話,復雜的我也不懂,就我個人理解而言,反向代理有很多用途,比如說保護真實服務器不被外界攻擊,加速網絡等等。今天我們要介紹的就是加速網絡的一種。

 

首先介紹一下場景:

我有一個網站,部署在法國的服務器上,域名是www.2.com,國內用戶直接訪問這個網站的時候,網絡速度非常的慢,因為大家都知道,中國到法國的網絡是經過了很遙遠的距離傳輸。國內的服務器雖然速度很快,但是費用卻很貴,那么有什么辦法可以加速國內用戶訪問我法國的網站呢?今天我就給大家介紹一種反向代理加速的方法。

 

首先我們要找一台訪問法國服務器速度比較快的服務器,折中一點我們可以找香港的服務器,配置不需要太高,為什么挑香港呢?因為香港是我們中國作為對外的一個轉接口,大陸到香港的網絡速度不會慢,而香港到法國的速度又不會太慢,所以我們選擇香港來中轉。

 

實現方法:在香港服務器上部署反向代理服務,然后將域名解析到香港服務器,當用戶訪問我網站的時候,實際是訪問了香港的服務器,然后由香港服務器將用戶的請求轉發到法國服務器,法國服務器處理完成后,再將結果返回給香港服務器,香港服務器接收后再返回到用戶瀏覽器,這樣一來,用戶並沒有直接訪問速度慢的法國服務器,而是經過了香港服務器的中轉,因此訪問的速度有所提高。

 

整個流程如下圖所示:

未命名-1.jpg

 

那么如何實現這樣的反向代理服務呢?我們選擇的是Nginx,這款大名頂頂的工具,它出生的目的就是為了實現反向代理服務。下面是一個簡單的反向代理服務配置:

upstream remote                                     #這里的remote是可以隨便取的名稱
{
    keepalive 30;                                   #這里指定保持連接,時間為30秒
    server www.2.com;                               #這個www.2.com是目標網站的IP
}
server {
    listen       80;                                #這個是中轉機綁定的端口
    server_name  www.1.com;                         #這里是中轉機綁定的域名

	proxy_buffering off;                            #這兩行是指關閉傳輸緩沖區,降低內存占用,提高響應速度
    proxy_request_buffering off;   

    location / 
    {
        proxy_set_header X-Real-IP $remote_addr;    #將用戶的真實IP傳遞給目標服務器
        proxy_set_header Host www.2.com;            #設置Host為www.2.com,因為目標服務器的網站綁定了域名www.2.com
        proxy_set_header Connection Keep-Alive;     #設置保持長連接,時間為上面upstream里的keepalive的30秒
        proxy_pass http://remote;                   #這里的remote對應upstream設置的名稱
        sub_filter "2.com" "1.com";                 #這里表示將目標網站的字符串“2.com”全部替換成“1.com”
        sub_filter "哈哈" "你好";                   #這里表示將目標網站的字符串“哈哈”全部替換成“你好”
        sub_filter_once off;                        #這里表示上面的替換是替換全部匹配成功的內容,而不是只替換一次
    }
}

 

 原文鏈接:http://www.3000.cx/detail.php?id=6817


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM