Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 透明地在一个地址上提供多个Web应用程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_675_2@

概述

我有多个Web应用程序在自己的http服务器上运行,例如端口8080上的 ruby / rails应用程序和8081上的 python / cherrypy应用程序. 是否可以通过单端口地址透明地提供这些?也许通过添加第三个http服务器来转换所有请求(例如http://localhost/app1& http://localhost/app2).我选择的平台是Linux 您正在寻找的是“反向代理
@H_675_2@
@H_675_2@ @H_675_2@
我有多个Web应用程序在自己的http服务器上运行,例如端口8080上的 ruby / rails应用程序和8081上的 python / cherrypy应用程序.

是否可以通过单端口地址透明地提供这些?也许通过添加第三个http服务器来转换所有请求(例如http://localhost/app1& http://localhost/app2).我选择的平台是Linux

@H_675_2@

解决方法

您正在寻找的是“反向代理”.有许多具有此功能的Web服务器,包括Apache httpd,lighttpd和Nginx,以及专为反向代理设计的更多精简Web服务器.

由于Apache最有可能为您提供和/或最容易部署,因此,如果安装了mod_proxy_http,那么包含在Apache配置文件相关部分中的这段代码应该为您提供所需的最小配置.并启用:

# ... [snip] ...
<VirtualHost *:80>
# ... [snip] ...

# This line prevents mod_proxy from acTing as a forWARD proxy
# Yes it looks silly,but it's correct for reverse proxy configurations
Proxyrequests Off

# Rails app on port 8080
ProxyPass /app1 http://localhost:8080
ProxyPassReverse /app1 http://localhost:8080

# CherryPy app on port 8081
ProxyPass /app2 http://localhost:8081
ProxyPassReverse /app2 http://localhost:8081

# ... [snip] ...
</VirtualHost>

更新:以下是各种服务器的一些链接(有时是密集的):

> Apache mod_proxy
> Nginx HttpProxyModule
> @L_607_16@

说到智者

还要虑使用反向代理,后端应用程序将不再接收来自发起请求的客户端的IP的请求.相反,所有请求似乎都来自localhost(127.0.0.1).因此任何与客户端IP相关的逻辑都将停止运行.如果您的应用程序需要此请求元数据,则需要遵循依赖于反向代理http服务器的过程.

在Apache中,mod_proxy自动向请求添加X-ForWARDed-For标头,其值是进入Apache的请求的IP地址(或者已转发请求的IP列表,如果您有多个反向代理的链) ).对于Nginx,我相信您可能必须指示服务器发送此类标头(详细信息在上面的链接中).

如果您的后端应用程序关注原始客户端请求中的Host:头,则您需要修改代码以查找(在Apache中)X-ForWARDed-Host头.

@H_675_2@ @H_675_2@@H_675_2@

大佬总结

以上是大佬教程为你收集整理的linux – 透明地在一个地址上提供多个Web应用程序全部内容,希望文章能够帮你解决linux – 透明地在一个地址上提供多个Web应用程序所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。