<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 1.說說正向代理和反向代理的區別 ··· 正向代理和反向代理的位置是一樣的B,都處于客戶端A和服務端(C或其他)中間; 區別在于 正向代理客戶端,服務端不清楚誰是真正的請求人,服務端被忽悠了;正向代理可用于翻墻 反向代理服務端,客戶端不清楚誰是真正的響應人,客戶端被忽悠了;反向代理可用于保護真實服務器 ··· #### 一、介紹 > 實踐中客戶端無法直接跟服務端發起請求的時候,我們就需要代理服務。代理可以實現客戶端與服務端之間的通信,我們的Nginx也可以實現相應的代理服務。代理分為正向代理和反向代理,此文就來演示一下Nginx配置正向代理和反向代理的場景。 * * * #### 二、正向代理和反向代理的區別 正向代理和反向代理的區別我在知乎上找到兩張圖可以幫助我們很好的理解: ![](//upload-images.jianshu.io/upload_images/2660278-bfdc4848a69c14d1.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/522/format/webp) ![](//upload-images.jianshu.io/upload_images/2660278-63008f77f4f264b8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/994/format/webp) ###### 正向代理:客戶端 代理 一>服務端 正向代理簡單地打個租房的比方: A(客戶端)想租C(服務端)的房子,但是A(客戶端)并不認識C(服務端)租不到。 B(代理)認識C(服務端)能租這個房子所以你找了B(代理)幫忙租到了這個房子。 這個過程中C(服務端)不認識A(客戶端)只認識B(代理) C(服務端)并不知道A(客戶端)租了房子,只知道房子租給了B(代理)。 ###### 反向代理:客戶端 一>代理 服務端 反向代理也用一個租房的例子: A(客戶端)想租一個房子,B(代理)就把這個房子租給了他。 這時候實際上C(服務端)才是房東。 B(代理)是中介把這個房子租給了A(客戶端)。 這個過程中A(客戶端)并不知道這個房子到底誰才是房東 他都有可能認為這個房子就是B(代理)的 由上的例子和圖我們可以知道正向代理和反向代理的區別在于代理的對象不一樣,正向代理的代理對象是客戶端,反向代理的代理對象是服務端。 #### 三、Nginx代理的配置演示 ##### 1、正向代理配置場景演示 正向代理很常見,我們的科學上網就是一種正向代理。 我們接下來演示正向代理的這么一個場景。 首先我在我的A服務器的nginx設置訪問控制 訪問控制之前我訪問A下的test.html是這樣的: ![](//upload-images.jianshu.io/upload_images/2660278-26965236907d0b63.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/672/format/webp) 我們打開/etc/nginx/conf.d/default.conf 我們加入這么一個判斷語句 如果訪問A的IP不是118.126.106.11(我的B服務器)則返回403. ~~~ location / { if ( $remote_addr !~* "^118\.126\.106\.11") { return 403; } root /opt/app/demo/html; index index.html index.htm; } ~~~ 添加后reload一下nginx再訪問test.html: ![](//upload-images.jianshu.io/upload_images/2660278-d562cc7a7da6a375.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp) 此時本地我的瀏覽器就是被限制了,訪問不了該資源。 現在我登錄上我的B服務器,打開/etc/nginx/conf.d/default.conf 添加`resolver`和`proxy_pass`,設置如下: ~~~ server { listen 80; server_name localhost nginx.tangll.cn; resolver 8.8.8.8; location / { proxy_pass http://$http_host$request_uri; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } ~~~ `resolver`為DNS解析,這里填寫的IP為Google提供的免費DNS服務器的IP地址 `proxy_pass`配置代理轉發 至此便是配置了B服務器所有訪問根一級的請求全部都代理轉發對應到$http\_host$request\_uri去了,`$http_host`就是我們要訪問的主機名,`$request_uri`就是我們后面所加的參數。 簡單的說至此就是相當于配置好了我們請求了B服務器,B服務器再去請求我們所請求的地址。 那么接下來我們來看一下結果,我們在本地配置好代理,我這里是mac系統,可以從網絡設置中選擇高級,然后選擇代理 ![](//upload-images.jianshu.io/upload_images/2660278-97f03c5f6b8fdf3d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp) 填入我們B服務器的IP,然后我們來看一下代理是否成功。 我們登錄[http://www.ip138.com/](https://link.jianshu.com?t=http%3A%2F%2Fwww.ip138.com%2F) 可以看到此時我們的IP地址已經為B服務器的IP,說明代理成功。 ![](//upload-images.jianshu.io/upload_images/2660278-11a88d22a5b71572.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/936/format/webp) 然后我們再來訪問一下test.html: ![](//upload-images.jianshu.io/upload_images/2660278-180b6a4ea2aaa22e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/822/format/webp) 結果證明,此時的客戶端已經可以成功訪問A服務器的資源。 以上就是正向代理的一個場景演示,這個過程中可以知道,我們客戶端是想要A的資源,但是A的資源只有B能拿到,便讓B代理去幫助我們訪問A的資源。整個過程A只知道B拿了他的資源,并不知道客戶端拿到。 ##### 2、反向代理配置場景演示 反向代理的演示更為簡單一些。 首先在/etc/nginx/conf.d/下新建一個test.conf: ~~~ server { listen 8080; server_name localhost nginx.tangll.cn; location / { root /opt/app/demo/html; index index.html index.htm; } error_page 500 502 503 504 404 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } ~~~ 可以看到我server里listen的是8080端口,但是我的服務器本身不對外開放8080端口,只開放了80端口。 所以我們此時訪問test.html結果是訪問不到的: ![](//upload-images.jianshu.io/upload_images/2660278-a9a8483c9cd251b1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp) 然后我們打開我們的/etc/nginx/conf.d/default.conf 添加`proxy_pass`設置如下: ~~~ server { listen 80; server_name localhost nginx.tangll.cn; location / { root /usr/share/nginx/html; index index.html index.htm; } #設置代理 #location ~ /test.html$ { # proxy_pass http://127.0.0.1:8080; #} error_page 500 502 503 504 404 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } ~~~ 我們設置當匹配test.html結尾的URL時就去代理訪問本機的8080端口 為了對比我們先注釋掉,然后直接80端口訪問一下test.html: ![](//upload-images.jianshu.io/upload_images/2660278-c92869226489a4f7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1000/format/webp) 可以看到此時返回的404。 這時候取消注釋我們reload一下nginx然后用80端口訪問test.html ![](//upload-images.jianshu.io/upload_images/2660278-bf0341255ce55a84.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/758/format/webp) 此時便可訪問8080端口配置的資源。 以上便是完成了一個反向代理的演示,這個過程中我們可以知道,客戶端想要訪問的是test.html,但是test.html實際上是8080端口下配置的,中間經過了代理才能拿到。也就是說客戶端并不知道中間經歷了什么代理過程,只有服務端知道。客戶端只知道他拿到了test.html也就是8080端口下配置的資源內容。 #### 四、總結 > 由上的打比方和演示例子可以體會到正向代理與反向代理的區別和Nginx正向代理和反向代理的簡單配置。正向代理和反向代理的區別上邊也說過在于代理的對象不一樣,正向代理的代理對象是客戶端,反向代理的代理對象是服務端。 > 最后一句話總結此文就是 > 代理服務器站在客戶端那邊就是正向代理, > 代理服務器站在原始服務器那邊就是反向代理, > Nginx通過`proxy_pass`可以設置代理服務。 作者:唐龍隆 鏈接:https://www.jianshu.com/p/ae76c223c6ef 來源:簡書 簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看