我已经将 wiki 软件 Gitit 设置为在同一台 Apache 服务器的两个不同端口(端口 1848 和 4000)上运行。我已确认它们正在运行。
现在我想将这两个网站代理到更漂亮的 URL,例如 sitea.com 和 siteb.com。两者的 IP 地址相同(例如,12.34.56.78)。
我的服务器管理员已为名称添加了 DNS 条目,但我似乎无法使 Apache 配置正常工作。按照此处的说明,我尝试设置这样的 VirtualHost:
NameVirtualHost *:1848
<VirtualHost *:1848>
ServerName sitea.com
DocumentRoot /var/www/
RewriteEngine On
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPassReverse / http://127.0.0.1:1848
RewriteRule ^(.*) http://127.0.0.1:1848$1 [P]
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
在端口 4000 上还有另一个类似的虚拟主机。但是当我发出时service httpd restart
,启动 httpd 时出现一条FAILED
消息,并且我的浏览器无法连接到 sitea.com。
据我所知,我的 httpd.conf 的其余部分是发行版附带的默认文件。我的服务器在 RedHat Enterprise 机器上运行。我是 Apache 的新手,所以我确信这里有一个显而易见的答案,但在尝试对配置进行各种调整后,我无法找出我做错了什么。
編輯:问题是我没有检查以确保我的错误日志的路径名正确。我的发行版将日志存储在 /var/log/httpd 中,而不是 /var/log/apache2 中。(脸红了。)
答案1
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
</VirtualHost>
<VirtualHost *:80>
ServerName www.otherdomain.tld
DocumentRoot /www/otherdomain
</VirtualHost>
此示例来自虚拟主机的 apache 文档<VirtualHost/>
. 在每个块中定义您的反向代理设置。
下面的配置可能会有帮助
NameVirtualHost *:80
<VirtualHost *:80>
ServerName sitea.com
DocumentRoot /var/www/
RewriteEngine On
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:1848/
ProxyPassReverse / http://127.0.0.1:1848/
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
<VirtualHost *:80>
ServerName siteb.com
DocumentRoot /var/www/
RewriteEngine On
ProxyPreserveHost On
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:4000/
ProxyPassReverse / http://127.0.0.1:4000/
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
</VirtualHost>
答案2
说起来有点不好意思,但问题是我的错误日志的路径是错误的。我的发行版将错误日志放在 /var/log/httpd 中,因此 Apache 每次到达 ErrorLog 行时都会卡住,因为不存在这样的目录。活到老学到老...