在不同的子域上一起运行 Apache 和 Tomcat?

在不同的子域上一起运行 Apache 和 Tomcat?

在 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'

相关内容