NGINX中的差异HTTP重定向vs反向代理

NGINX中的差异HTTP重定向vs反向代理

问题描述:

我在理解反向代理(即使用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等)托管的网站重定向到单独的服务器应用服务器的建议方法是什么?

使用重定向服务器会通知客户端在其他位置寻找资源。客户会意识到这个新的位置。新位置必须可以从客户端访问。
反向代理将客户端的请求转发给其他位置本身,并将此位置的响应发送回客户端。这意味着客户端不知道新的位置,并且新位置不需要客户端直接访问。

+0

假设我的域A的服务器实际上包含应用程序。但是,用户/客户端将连接到具有域B的不同服务器以加入应用程序。用户将从域B向应用程序进行身份验证。推荐的方法是什么?重定向或反向代理?就预期结果而言,它们都非常相似。 –

+0

反向代理通常用于获取(可能受限制的)对某些非公用服务器的访问权限,并且不提供对可以公开访问的服务器的代理访问权限。至于认证:如果你使用重定向,你需要让A知道用户使用OAUTH或类似的方式被B认证。在使用反向代理时,A通常不能直接从外部访问,B会检查身份验证和访问。 –

+0

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