代码之家  ›  专栏  ›  技术社区  ›  punkish

本地主机上通过端口80访问的不同端口上的Web应用程序

  •  3
  • punkish  · 技术社区  · 15 年前

    在我的笔记本电脑上,用apache

    我在笔记本电脑的不同目录中有不同的web应用程序,我可以开始使用简单的web服务器监听不同的端口。例如

    ~/app1/./app.pl
    >> listening on http://localhost:3000/
    
    ~/app2/./app.pl
    >> listening on http://localhost:3001/
    
    ~/app3/./app.pl
    >> listening on http://localhost:3001/
    

    我想像这样从我的浏览器访问上面的内容

    http://localhost/app1
    http://localhost/app2
    http://localhost/app3
    

    我可以用mod_proxy做上面的事情吗?如果是这样,怎么办?

    更新:我必须补充的是,我已经搜索了mod_proxy,阅读了apache网站上的tutes,并进行了以下实验

    在我的httpd.conf中取消了以下注释

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_connect_module modules/mod_proxy_connect.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    

    在我的httpd.conf中添加了以下内容

    <IfModule mod_proxy.c>
        ProxyRequests On
        ProxyPass /app1 http://localhost:3000/
        ProxyPassReverse /app1 http://localhost:3000/
        ProxyPass /app2 http://localhost:3001/
        ProxyPassReverse /app2 http://localhost:3001/
        ProxyPass /app3 http://localhost:3002/
        ProxyPassReverse /app3 http://localhost:3002/
    </IfModule>
    

    然而,当我尝试访问上述应用程序时,我得到了htp404。

    2 回复  |  直到 15 年前
        1
  •  2
  •   ollyc    15 年前

    我将使用mod_rewrite和mod_proxy来完成这项工作。例如(以下规则 进入virtualhost配置):

    RewriteEngine On
    RewriteRule ^/app1(.*)$ http://localhost:3000/$1 [P]
    RewriteRule ^/app2(.*)$ http://localhost:3001/$1 [P]
    RewriteRule ^/app3(.*)$ http://localhost:3002/$1 [P]
    

    这些规则使用mod_rewrite [P] 代理请求的标志。你需要 通过添加/取消注释,确保mod_proxy、mod_proxy_http和mod_rewrite都已加载到您的主apache配置中:

    LoadModule proxy_module modules/mod_proxy.so
    LoadModule proxy_http_module modules/mod_proxy_http.so
    LoadModule rewrite_module modules/mod_rewrite.so
    
        2
  •  0
  •   Jeremy    15 年前

    是的,你可以。谷歌“mod_proxy tutorial”有很多结果…

    特别是,如果服务器支持ajp协议,则需要使用mod_proxy_ajp。(例如Tomcat。)