在 ServerFault 上发布了此消息,但没有收到回复。希望我在 Ubuntu 网站上能有更好的运气。
我今天一直在尝试让它正常工作。我有一台解析域名的服务器示例.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>
Apache 实例上启用了 mod_proxy 和 mod_rewrite。我有一个 example.com 和 app.example.com 的 CNAME 条目。访问 app.example.com 时,我收到 403 禁止访问,提示我无权访问服务器上的 /。我做错了什么?
答案1
当我在虚拟主机定义中使用这样的构造时,我遇到了类似的问题:
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
就我而言,当我指向应用程序时它开始工作:
这些允许您重定向此类地址:http://app.example.com/confluence
ProxyPass /confluence/ http://localhost:8180/confluence/ ProxyPassReverse /confluence/ http://localhost:8180/confluence/
这些允许您重定向此类地址:http://app.example.com适当的应用
ProxyPass / http://localhost:8180/confluence/ ProxyPass / http://localhost:8180/confluence/
答案2
尝试:
VirtualHost 'app.example.com:80'
代替
VirtualHost '*:80'