路由器后面有 2 个 Apache OSX 服务器,使用反向代理解决方案,具有 1 个公共 IP 地址

路由器后面有 2 个 Apache OSX 服务器,使用反向代理解决方案,具有 1 个公共 IP 地址

我自己也很困惑,所以我需要一位专家的反向代理帮助。

公共 IP 上的服务器 1 - 173.xxx.xxx.xxx 端口 80(LAN IP 为 10.1.10.2)。

服务器 1 还具有本地 DNS 启动器,以便本地用户能够浏览我们本地 LAN 内的所有 4 个注册域。

服务器 2 位于本地 LAN 上,本地 IP 为 10.1.10.2

第一个问题是:

如果我希望我的服务器 2 可以从互联网访问,下面的 proxyPass 语句应该放在哪里?将转到服务器 1 还是服务器 2。或者我是否需要对服务器 1 和服务器 2 使用相同的语句?我尝试将其放在任何一个上,但我无法让它工作。它工作一次,但无论用户在浏览器上使用哪个域,他们始终只能看到 domain1.com。

ProxyRequests Off
ProxyPreserveHost On
    <Proxy *>
     Order deny,allow
     Allow from all
    </Proxy>
    ProxyPass / http://WhichIPand:Port/
    ProxyPassReverse / http://WhichIPand:Port/

问题 2:httpd-vhosts.conf 我可以继续在服务器 1 和服务器 2 上使用虚拟主机吗?我目前在服务器 1 上使用虚拟主机,其中有 4 个注册域名。我想将 2 个域名从服务器 1 移到服务器 2,以便,

Server 1 will have: domain1.com, domain2.com
Server 2 will have: domain3.com, domain4.com

问题 3:对于服务器 1 和服务器 2,如果每个服务器都有 2 个合格域,我的主机文件会是什么样子。是这样做还是将所有本地 LAN IP 放在每个服务器上。

127.0.01 domain1.com
127.0.01 domain2.com
127.0.01 domain3.com
127.0.01 domain4.com

我知道这可能看起来太多了,但这确实会帮助很多人,除了我。但是我,我现在很迷茫,一个有伟大头脑和教学技能的人应该能帮助我,

谢谢大家并祝大家圣诞快乐。


在回复 Shane 和 Aaron 时添加了以下内容:

这是我目前得到的,但它没有任何帮助。也许你可以帮助我,非常感谢你的回复......

我的服务器 1 在公共 IP 173.1xx.1xx.xxx 端口 80 上(LAN IP 为 10.1.10.2)在虚拟主机上设置 OSX Lion:httpd-vhost.conf

通过此设置,我得到:

服务暂时不可用 由于维护停机或容量问题,服务器暂时无法满足您的请求。请稍后重试。

NameVirtualHost *

<VirtualHost *:80>
ServerName domain1.com
ServerAlias www.domain1.com
ServerAdmin [email protected]
DocumentRoot "/Library/WebServer/joomla"
ErrorLog /Library/WebServer/joomla/error_domain1.log
<Directory "/Library/WebServer/joomla">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All AuthConfig
    Order allow,deny
    Allow from all
</Directory>
ProxyRequests Off
ProxyPreserveHost On
    <Proxy *>
     Order deny,allow
     Allow from all
    </Proxy>
        ProxyPass / http://10.1.10.2:8080/
        ProxyPassReverse / http://10.1.10.2:8080/
</VirtualHost>


<VirtualHost *:80>
ServerName  domain2.com
ServerAlias www.domain2.com
ServerAdmin [email protected]
DocumentRoot "/Library/WebServer/webb"
ErrorLog /Library/WebServer/webb/error_domain2.log
<Directory "/Library/WebServer/webb">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
ProxyRequests Off
ProxyPreserveHost On
    <Proxy *>
     Order deny,allow
     Allow from all
    </Proxy>
        ProxyPass / http://10.1.10.2:8080/
        ProxyPassReverse / http://10.1.10.2:8080/
</VirtualHost> 



My Server 2 on LAN IP: 10.1.10.2, OSX Snow setup on virtual host: httpd-vhost.conf

<VirtualHost *:80>
ServerName  domain3.com
ServerAlias www.domain3.com
ServerAdmin [email protected]
DocumentRoot "/Library/WebServer/domain3"
ErrorLog /Library/WebServer/domain3/error_cj.log
<Directory "/Library/WebServer/domain3">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All AuthConfig
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>  


<VirtualHost *:80>
ServerName domain4.org
ServerAlias www.domain4.org
ServerAdmin [email protected]
DocumentRoot "/Library/WebServer/domain4"
ErrorLog /Library/WebServer/domain4/error_fn.log
<Directory "/Library/WebServer/domain4">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All AuthConfig
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>  

答案1

  1. ProxyPass 配置将成为服务器 1 配置的一部分。这是充当服务器 2 代理的主机。您无需对服务器 2 进行任何更改。

  2. 您应该可以继续使用虚拟主机。但我感到很沮丧,所以只用<location>语句设置了我的代理。它很好地满足了我的需要。

  3. 我认为您只是用本地主机文件使事情复杂化了。通过 IP 代理服务器 2?本地主机文件不是 DNS,因此它不会改变其他主机访问这些系统的方式。但是,如果您通过 FQDN 代理服务器 2,服务器 1 将无法在本地主机上找到它。它必须是内部 LAN IP。

答案2

听起来你想要做的是这样的:

  • 服务器 1 是可公开访问的服务器,包含 4 个站点:
    1. domain1.com,它为内容服务
    2. domain2.com,为其提供内容
    3. domain3.com,它代理到服务器 2
    4. domain4.com,它代理到服务器 2
  • 服务器2没有公网地址,包含2个站点:
    1. domain3.com,它为内容服务
    2. domain4.com,它为内容服务

如果是这种情况,那么您的服务器 2 配置看起来不错,并且服务器 1 看起来应该如下所示:

ProxyRequests Off
ProxyPreserveHost On
NameVirtualHost *

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    ServerAdmin [email protected]
    DocumentRoot "/Library/WebServer/joomla"
    ErrorLog /Library/WebServer/joomla/error_domain1.log
    <Directory "/Library/WebServer/joomla">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All AuthConfig
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName  domain2.com
    ServerAlias www.domain2.com
    ServerAdmin [email protected]
    DocumentRoot "/Library/WebServer/webb"
    ErrorLog /Library/WebServer/webb/error_domain2.log
    <Directory "/Library/WebServer/webb">
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName domain3.com
    ServerAlias www.domain3.com
    ServerAdmin [email protected]
    ProxyPass / http://10.1.10.2:80/
    ProxyPassReverse / http://10.1.10.2:80/
</VirtualHost>

<VirtualHost *:80>
    ServerName domain4.com
    ServerAlias www.domain4.com
    ServerAdmin [email protected]
    ProxyPass / http://10.1.10.2:80/
    ProxyPassReverse / http://10.1.10.2:80/
</VirtualHost>

是的,正如 Aaron 所建议的,清除主机文件 - 它们只会让人感到困惑。

相关内容