2016-06-21 36 views
0

我已经成功(据我所知)创建一个httpd反向代理服务器从面向服务器到另一个非互联网服务器。我还使用haproxy创建了一个路由表,将特定请求路由到特定端口上的特定其他服务器。我们分别称它们为服务器A,B和C,其中C表示被路由到的服务器和端口列表。httpd Reverseproxy服务于HTML页面服务的所有文件

由于我们的服务器架构,这是唯一能够在预期服务器上向互联网提供数据的途径。

当我在https serverA.com/jira访问站点时,我将A发送给B,使用http serverB/jira将基于/ jira的路由发送到C托管我们的内部jira实例的服务器,位于http serverC:somePort

我从jira获取页面,但它没有格式化,并提到该页面是断开的链接。前往Firefox的调试器我在网络标签中看到,页面jira返回一个404错误,但随后几个其他的GET被放置,因为接收到的HTML页面的内容,他们都得到了404'd,这是有道理的,为什么页面没有格式化。

我的主要问题是这样的:httpd使用基于/ jira的位置块,但是当额外的GET请求被发送时,它们被发送到https serverA.com/additionalFiles.(css,js等)为此服务器不会正确地反向代理。有没有办法将传入的html页面中的所有请求更改为jira/additionFiles而不是additionalFiles,或者让httpd服务继续为其余的依赖关系(我知道http是无连接的)提供反向代理服务?如果不是,最好的做法是什么?

我的第二个问题与第一个问题一起,为什么我在初始页面加载中看到404以及如何将其更改为200?

回答

0

我们的解决方案是在前端服务器上使用stunnel,并将所有https流量路由到服务器B,然后将服务器B分发到流量应该去的地方。我正在使用服务器C并让他们使用服务器A作为代理,以便所有数据都能正确服务,而服务器B只是一个中间人。