我自己也很困惑,所以我需要一位专家的反向代理帮助。
公共 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
ProxyPass 配置将成为服务器 1 配置的一部分。这是充当服务器 2 代理的主机。您无需对服务器 2 进行任何更改。
您应该可以继续使用虚拟主机。但我感到很沮丧,所以只用
<location>
语句设置了我的代理。它很好地满足了我的需要。我认为您只是用本地主机文件使事情复杂化了。通过 IP 代理服务器 2?本地主机文件不是 DNS,因此它不会改变其他主机访问这些系统的方式。但是,如果您通过 FQDN 代理服务器 2,服务器 1 将无法在本地主机上找到它。它必须是内部 LAN IP。
答案2
听起来你想要做的是这样的:
- 服务器 1 是可公开访问的服务器,包含 4 个站点:
domain1.com
,它为内容服务domain2.com
,为其提供内容domain3.com
,它代理到服务器 2domain4.com
,它代理到服务器 2
- 服务器2没有公网地址,包含2个站点:
domain3.com
,它为内容服务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 所建议的,清除主机文件 - 它们只会让人感到困惑。