将此发布在 ServerFault 上,但没有得到回复。希望我在 Ubuntu 网站上有更好的运气。
我一直试图让这个工作整个今天。我有一台解析为域example.com的服务器。这是运行 Apache2 和 Tomcat 6。要求是将对 example.com 的请求定向到 apache2,将 app.example.com 的请求定向到 Tomcat。我知道我必须做一个 VirtualHost 代理通行证才能工作。这是我服务器上的设置。
/etc/hosts文件看起来像这样
127.0.0.1 localhost localhost.localdomain example.com app.example.com
我在 /etc/apache2/sites-enabled 中有两个不同域的虚拟主机文件
/etc/apache2/sites-enabled/example.com看起来像这样
<VirtualHost *:80>
# Admin email, Server Name (domain name) and any aliases
ServerAdmin webmaster@localhost
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
/etc/apache2/sites-enabled/app.example.com文件看起来像这样
<VirtualHost *:80>
ServerName app.example.com
ServerAlias www.app.example.com
ProxyPreserveHost On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
</VirtualHost>
mod_proxy 和 mod_rewrite 都在 apache 实例上启用。我对 example.com 和 app.example.com 都有一个 CNAME 条目。访问 app.example.com 时,我得到一个 403 禁止,说我无权访问 / 在服务器上。我究竟做错了什么?