在同一 IP 上托管两个独立的 Web 服务器

Ran*_*pel 5 server networking apache2 webserver 12.04

我目前有一个安装了 Apache 并且运行良好的 Ubuntu Web 服务器,我想做两件事,我想再设置两个位于同一 WAN 地址上的盒子,但当然有单独的本地地址。

因此,假设我将 www.example.com 作为主服务器,我还希望 test.example.com 在不同的盒子上,而 fun.example.com 在第三个盒子上。

我将如何做到这一点?

Ran*_*pel 5

来自 George Kourouleas 提供的链接

Apache 反向代理

是我要找的

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName foo.com

  DocumentRoot /srv/www/default

  <Location "/">
    Order Deny, Allow
    Deny from all
    Allow from all
  </Location>
</VirtualHost>

<VirtualHost *:80>
  ServerName fooa.com

  ProxyPreserveHost on
  ProxyPass / http://server2/
  ProxyPassReverse / http://server2/
</VirtualHost>

<VirtualHost *:80>
  ServerName foob.com
  ServerAlias fooc.com

  ProxyPreserveHost on
  ProxyPass / http://server3/
  ProxyPassReverse / http://server3/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

与 mod_proxy 一起完全是我想要的


小智 0

笔记

在 Apache 服务器上创建虚拟主机配置不会神奇地导致为这些主机名创建 DNS 条目。您必须在 DNS 中拥有名称,解析为您的 IP 地址,否则其他人将无法看到您的网站。您可以将条目放入主机文件中进行本地测试,但这仅适用于具有这些主机条目的计算机。

# Ensure that Apache listens on port 80
Listen 80
<VirtualHost *:80>
    DocumentRoot /www/example1
    ServerName www.example.com

    # Other directives here
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /www/example2
    ServerName www.example.org

    # Other directives here
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

星号匹配所有地址,因此主服务器不处理任何请求。由于服务器名称为 www.example.com 的虚拟主机在配置文件中排在第一位,因此它具有最高优先级,可以被视为默认或主服务器。这意味着如果收到的请求与指定的 ServerName 指令之一不匹配,则该请求将由第一个 VirtualHost 提供服务。

来自http://httpd.apache.org的回答

亲切的问候。