反向代理服务器和虚拟主机有什么区别?

反向代理服务器和虚拟主机有什么区别?

抱歉,这个问题问得有点蠢。我对后端的东西还很陌生。

我正在尝试在之前设置了 NextCloud 和 Wikimedia 服务器的服务器上设置 Rocket Chat 服务器。

rocket chat 文档说我需要设置一个反向服务器代理来将传入流量路由到 rocket chat 服务器。我在他们的论坛上询问了我遇到的一个问题,有人告诉我我需要设置一个虚拟主机(我也依稀记得为 nextcloud 和 wikimedia 做过这件事)。但是当我查找设置虚拟主机时,它看起来与设置反向服务器代理完全一样。我是不是误解了什么?两者有什么区别?

以下是描述设置反向服务器代理的相关 RocketChat 文档:https://rocket.chat/docs/installation/manual-installation/configuring-ssl-reverse-proxy/

以下是有关设置虚拟主机的页面:https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04

在这两种情况下,我都会向 sites-enabled 文件夹添加一个配置文件,该文件会告诉传入流量如何委派传入信息,对吗?如果我理解正确的话?

编辑:我以什么方式请求学习材料?不是,我只是在问一个关于特定区别的特定问题。 Stack Exchange 上有很多这样的问题。示例: https://stackoverflow.com/questions/156767/whats-the-difference-between-an-argument-and-a-parameter

https://stackoverflow.com/questions/2685413/what-is-the-difference-between-a-segmentation-fault-and-a-stack-overflow

答案1

理解虚拟主机和代理之间的区别并不那么困难。

虚拟主机定义并限定特定域名的配置,通过它您可以在同一个 http 服务器上托管多个 web 服务(使用 http 因为它是通用的)

相反,代理是一种配置,它指示 http 服务器对于某个域名或 url 的 http 服务不是本地的,而是由远程或另一个 httpd 服务器提供服务。

通常您将在虚拟主机中设置代理配置。

更新添加带有内联注释的示例

这是 Vhost 监听所有接口 80 端口的定义:

<VirtualHost *:80>

此Vhost将应答的域名:

    ServerName exampledomainA.it

域名别名:

    ServerAlias www.exampledomainA.it

当您访问时,将执行已定义的本地路径http://exapmledomainA.it

    DocumentRoot /var/www/html

代理定义,告诉 Web 服务器将对 exampledomainA.it/phpmyadmin 的请求转发到http://www_phpmyadmin/

    ProxyPass "/phpmyadmin" "http://www_phpmyadmin/"
    ProxyPassReverse "/phpmyadmin"  "http://www_phpmyadmin/"

代理定义,告诉 Web 服务器将对 exampledomainA.it/blog 的请求转发到http://www_域名A/

    ProxyPass "/blog"   "http://www_domainA/"
    ProxyPassReverse "/blog"    "http://www_domainA/"

其他代理定义:

    ProxyRequests Off
    ProxyPreserveHost On
    RewriteEngine on

虚拟主机结束

</VirtualHost>

相关内容