通过端口80访问的不同端口上的localhost上的web应用 在我的笔记本电脑上,使用Apache

通过端口80访问的不同端口上的localhost上的web应用 在我的笔记本电脑上,使用Apache,web,port,mod-proxy,Web,Port,Mod Proxy,我在笔记本电脑的不同目录中有不同的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/ 我想像这样从我的浏

我在笔记本电脑的不同目录中有不同的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
<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>
在我的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
<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>

代理请求
ProxyPass/app1http://localhost:3000/
ProxyPassReverse/app1http://localhost:3000/
ProxyPass/app2http://localhost:3001/
ProxyPassReverse/app2http://localhost:3001/
ProxyPass/app3http://localhost:3002/
ProxyPassReverse/app3http://localhost:3002/
然而,当我尝试访问上述应用程序时,我得到了HTTP 404。

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


如果您的服务器支持ajp协议,您尤其需要使用mod_proxy_ajp。(比如Tomcat。)

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

这些规则使用mod_rewrite的
[p]
标志来代理请求。你需要做出决定 通过添加/取消注释,确保mod_proxy、mod_proxy和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

谢谢,但不,我甚至不想靠近Tomcat。@punkish:这只是一个例子,AJP也用于Jetty。我没说只有Tomcat。好吧,让我直说吧。。。我是否需要将mod_proxy与mod_rewrite一起使用?是的,您需要同时启用mod_proxy和mod_rewrite才能工作。您可以单独使用mod_代理(在像您这样的简单情况下可能更好),但是mod_rewrite在映射URL时为您提供了更大的灵活性,所以它通常是我这项工作的第一选择。好的。请你一步一步地拼写这个好吗?如果您从我上面的注释中看到,我无法使用mod_proxy进行此操作。我做错了什么?我该怎么办?我不必担心映射URL,因为我的web应用程序本身就可以做到这一点。我只想将浏览器指向,但让Apache在幕后将其重定向到如何处理应用程序内部生成的链接?e、 g.如果app1的javascript指向/js,而实际上它应该指向/app1/js,这将不起作用。在不重写应用程序源代码的情况下,它怎么能做到呢?