2017-02-10 224 views
-1

我在理解反向代理(即使用proxy_pass指令與給定的上游服務器)和301永久重定向之間的區別方面存在一些困難。他們有什麼相似/不同?NGINX中的差異HTTP重定向vs反向代理

反向代理

upstream backend { 
    server backend1.example.com  weight=5; 
    server backend2.example.com:8080; 
} 

server { 
    location/{ 
     proxy_pass http://backend; 
    } 
} 

HHTP重定向

Apache的實施例:http://www.inmotionhosting.com/support/website/htaccess/redirect-without-changing-url

NGINX例如:

server { 
    listen 80; 
    server_name domain1.com; 
    return 301 $scheme://domain2.com$request_uri; 
} 

因此,似乎這兩種方法與最終用戶的觀點沒有什麼不同。我希望確保高效的帶寬使用,同時使用SSL。目前,應用服務器在Nginx上使用自己的自簽名SSL證書。將用戶從標準Web託管公司(hostgator,godaddy等)託管的網站重定向到單獨的服務器應用服務器的建議方法是什麼?

回答

2

使用重定向服務器會通知客戶端在其他位置尋找資源。客戶會意識到這個新的位置。新位置必須可以從客戶端訪問。
反向代理將客戶端的請求轉發給其他位置本身,並將此位置的響應發送回客戶端。這意味着客戶端不知道新的位置,並且新位置不需要客戶端直接訪問。

+0

假設我的域A的服務器實際上包含應用程序。但是,用戶/客戶端將連接到具有域B的不同服務器以加入應用程序。用戶將從域B嚮應用程序進行身份驗證。推薦的方法是什麼?重定向或反向代理?就預期結果而言,它們都非常相似。 –

+0

反向代理通常用於獲取(可能受限制的)對某些非公用服務器的訪問權限,並且不提供對可以公開訪問的服務器的代理訪問權限。至於認證:如果你使用重定向,你需要讓A知道用戶使用OAUTH或類似的方式被B認證。在使用反向代理時,A通常不能直接從外部訪問,B會檢查身份驗證和訪問。 –

+0

謝謝,這很清楚。我是否需要修改DNS條目以包含域A(即godaddy或hostgator)? –