您的位置:首页 > 运维架构 > Apache

Apache配置--同一台机器上两个应用需要同时占用80端口的问题解决方法

2008-07-22 14:10 931 查看
问题描述如下,主要是针对测试环境:
1、首页部分内容是从静态服务器上读取,所以里面很多的链接都是写死的,是80端口的,为了不让QA测试时再去手动修改成20080,所以需要自动将mall.alisoft.com:80/*自动跳转到20080,或者是mall直接支持80和20080端口;
2、旺旺浮出免登陆时由于IM客户端已经写死到aso.alisoft.com的端口也是80,所以mall和aso两个应用都需要用到80端口;
 
为了解决上述问题,可以有两种实现方式:
1、  直接在aso或者mall的httpd.conf中修改,修改方式如下:
1)  新增Listen 80
2)  新增 aso虚拟主机;注意:RewriteRule是被注释掉的,对aso.alisoft.com域名进入的直接转向jboss;
<VirtualHost * >
    ServerAdmin sa@alibaba-inc.com
    ServerName  aso.alisoft.com
    DocumentRoot "/home/admin/aep/aso/htdocs/"
    RewriteEngine on
    RewriteLogLevel 5
    RewriteLog   /home/admin/aep/aso/logs/rewrite.log
    #RewriteRule ^/  http://aso.alisoft.com:30080/  [L,P]
</VirtualHost>
3)  新增 mall虚拟主机,让从mall.alisoft.com域名进入的转向20080,由于这里是服务器上的redirect,所以RewriteRule要设置成具体IP或者127.0.0.1,不能是域名;
<VirtualHost * >
    ServerAdmin sa@alibaba-inc.com
    ServerName  mall.alisoft.com
    DocumentRoot "/home/admin/aep/apps/htdocs/"
    RewriteEngine on
    RewriteLogLevel 5
    RewriteLog   /home/admin/aep/aso/logs/rewrite.log
    RewriteRule ^/(.*)$  http://127.0.0.1:20080/$1  [L,P]
</VirtualHost>
         4) 确认apache已经启用proxy模块,默认aso里面是不启用该module的;
                      LoadModule proxy_module       /usr/ali/apache2/modules/mod_proxy.so
   LoadModule proxy_http_module  /usr/ali/apache2/modules/mod_proxy_http.so
2、  采用优雅的单独proxy方式
由于方法1对原有系统aso或者是mall的apache配置侵入性很大,所以实现很不优雅,建议使用单独proxy方式
这种方式需要单独设置一个apache,该apache专门监听80端口,然后在该模块中新增多个 虚拟主机 即可;比如以下新增一个aso的虚拟主机,然后把所有80端口的请求redirect到30080端口;
<VirtualHost * >
    ServerAdmin sa@alibaba-inc.com
    ServerName  aso.alisoft.com
    DocumentRoot "/home/admin/aep/aso/htdocs/"
    RewriteEngine on
    RewriteLogLevel 5
    RewriteLog   /home/admin/aep/aso/logs/rewrite.log
    RewriteRule ^/(.*)$  http://127.0.0.1:30080/$1 [L,P]
</VirtualHost>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐