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

发布于 2024-08-24 12:10:49 字数 1187 浏览 10 评论 0原文

在我的笔记本电脑上,使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薄暮涼年 2024-08-31 12:10:50

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

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
断桥再见 2024-08-31 12:10:50

是的,你可以。谷歌搜索“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.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文