本地主机上不同端口上的 Web 应用程序通过端口 80 访问
在我的笔记本电脑上,使用 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 执行上述操作吗?如果是这样,怎么办?
更新:我必须补充一点,我已经在 Google 上搜索了 mod_proxy,阅读了 Apache 网站上的教程,并尝试了以下
未注释的内容 在我
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访问上述应用程序。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我会使用 mod_rewrite 和 mod_proxy 来完成此操作。例如(以下规则
进入您的 VirtualHost 配置):
这些规则使用 mod_rewrite 的
[P]
标志来代理请求。你需要做通过添加/取消注释,确保 mod_proxy、mod_proxy_http 和 mod_rewrite 都已加载到您的主 apache 配置中:
I would do this using mod_rewrite and mod_proxy. For example (the following rules
go into your VirtualHost configuration):
These rules use mod_rewrite's
[P]
flag to proxy the request. You'll need to makesure that mod_proxy, mod_proxy_http and mod_rewrite are all loaded in your main apache configuration by adding/uncommenting:
是的,你可以。谷歌搜索“mod_proxy教程”有很多结果...
特别是如果您的服务器支持AJP协议,您会想要使用mod_proxy_ajp。 (例如 Tomcat。)
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.)