通过端口80访问的不同端口上的localhost上的Web应用程序

时间:2010-03-08 17:24:27

标签: web port mod-proxy

在我的笔记本电脑上,使用Apache

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

~/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执行上述操作吗?如果是这样,怎么样?

更新:我必须添加我已经使用Google搜索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>

然而,当我尝试访问上述应用程序时,我收到HTTP 404。

2 个答案:

答案 0 :(得分:2)

我会使用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

答案 1 :(得分:0)

是的,你可以。谷歌搜索“mod_proxy教程”有很多结果......

特别是如果您的服务器支持AJP协议,您将需要使用mod_proxy_ajp。 (如Tomcat。)