web apps on localhost on different ports accessed via port 80

别来无恙 提交于 2019-12-07 11:49:41

问题


On my laptop, with Apache

I have different web apps in various directories on my laptop, that I can start using simple webservers listening on different ports. For example

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

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

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

I want to access the above from my browser like so

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

Can I do the above with mod_proxy? If so, how?

Update: I must add that I have Googled for mod_proxy, read the tutes on Apache's website, and experimented with the following

uncommented the following in my 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

added the following in my 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>

Yet, I get HTTP 404 when I try to access the above apps.


回答1:


I would do this using mod_rewrite and mod_proxy. For example (the following rules go into your VirtualHost configuration):

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

These rules use mod_rewrite's [P] flag to proxy the request. You'll need to make sure that mod_proxy, mod_proxy_http and mod_rewrite are all loaded in your main apache configuration by adding/uncommenting:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so



回答2:


Yes you can. Googling "mod_proxy tutorial" has plenty of results...

In particular you'll want to use mod_proxy_ajp if your server supports the AJP protocol. (Such as Tomcat.)



来源:https://stackoverflow.com/questions/2403227/web-apps-on-localhost-on-different-ports-accessed-via-port-80

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!