ubuntu上的tomcat7和apache2与某种代理集成

时间:2013-02-20 22:14:39

标签: tomcat ubuntu apache2 apache

我在 ubuntu 12.10上运行php5, apache 2.2 tomcat7 全部由apt-get安装。

我需要运行.php和.jsp文件。 我可以在每个上分别运行它们(tomcat和apache httpd)

我有搜索谷歌但无法为上述版本找到全面且易于理解的解决方案。

朋友告诉我我需要一个代理(用户首先点击apache httpd并将其转发到tomcat,如果它是一个.jsp,然后回到apache然后再转发给用户.php是以正常方式通过apache提供的)

1。我需要什么模块? 2.什么设置(* ALL )像代理(很多我不知道),我需要tomcat和apache的多个站点的虚拟主机。 *

我认为谷歌或论坛本身缺乏具体的指南。

研究

mod_proxy_ajp替换mod_jk

mod_php已经死了

旧系统的mod_php,2.2的fcgid和2.4的proxy_fcgi

修改

1和2解决了。剩下3个

我在下面有以下vhost文件。但是我已经在8080上为/home/ubuntu/tomcat/www/alpinemadotcom中的aplpinema“ ROOT.war ”运行了tomcate(这是未提取在webapps文件夹中但在缓存文件夹中(尽管是自动的)部署:真)

3-。我在哪里以及如何使用similer:

ProxyPass /apps/jira ajp://backend.example.com:8009/jira
ProxyPassReverse /apps/jira http://www.example.com/jira



<VirtualHost *:80>
        ServerAdmin info@alpinema.com
        ServerName  www.alpinema.com
        ServerAlias alpinema.com

        DocumentRoot /home/ubuntu/apache/www/alpinemadotcom
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/ubuntu/apache/www/alpinemadotcom/>
                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 ${APACHE_LOG_DIR}/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

1 个答案:

答案 0 :(得分:2)

我经常做同样的事情。不再需要mod_jk,因为mod_proxy_ajp替换了你已经提到过的。

首先,首先让你的应用程序完全启动并作为LAMP堆栈运行,这样你的所有PHP都能正常工作。一旦完成,有两个模块,你需要使其余的工作正确mod_proxy和mod_proxy_ajp!

将它们添加到您的LoadModule列表中,然后您可以为您的vhost创建一个别名的别名

有些事情:

ProxyPass /apps/jira ajp://backend.example.com:8009/jira
ProxyPassReverse /apps/jira http://www.example.com/jira 

通过首先为php设置apache,一切都应该正常工作,但是一旦有人进入http://www.example.com/jira/ *的路径,它就会自动代理到你的tomcat服务器。 ProxyPassReverse对于重写后端tomcat服务器发送的URL等非常有用,可以更加相对于您的实际托管位置。

要记住的一件非常重要的事情是,在考虑使用代理模块之前,您需要保护您的Apache。作为互联网上的开放代理可能是一件非常糟糕的事情!

请参阅此页:http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#access

同一页面还解释了您可以使用代理模块进行的所有不同修改的更多信息。

=========更新示例=========

<VirtualHost *:80>
    ServerAdmin info@alpinema.com
    ServerName www.alpinema.com
    ServerAlias alpinema.com
    DocumentRoot /home/ubuntu/apache/www/alpinemadotcom

    ProxyPass /alpinemadotcom http://www.alpinema.com:8080/
    ProxyPassReverse /alpinemadotcom http://www.alpinema.com/alpinemadotcom 

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    <Directory /home/ubuntu/apache/www/alpinemadotcom/>
        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 ${APACHE_LOG_DIR}/error.log
    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>