我已经成功(据我所知)从面向互联网的服务器创建了一个httpd反向代理到另一个非面向Internet的服务器。我还使用haproxy创建了一个路由表,以将特定请求路由到特定端口上的特定其他服务器。我们分别称它们为服务器A,B和C,其中C表示路由到的服务器和端口列表。
由于我们的服务器架构,这是唯一能够在目标服务器上向互联网提供数据的途径。
当我通过https serverA.com/jira访问该网站时,我正在使用http serverB / jira发送给B,该服务器基于/ jira路由到服务器,在C中托管我们内部jira实例的服务器在http serverC:somePort < / p>
我从jira返回页面,但它没有格式化,并提到该页面是一个断开的链接。进入Firefox的调试器,我在网络选项卡中看到页面jira返回404错误,但由于收到的HTML页面的内容而放置了其他几个GET,它们都得到404'd,这有理由为什么页面没有格式化
我的主要问题是:httpd正在使用基于/ jira的位置块,但是当发送其他GET请求时,它们会被发送到https serverA.com/additionalFiles.(css,js等)哪个服务器不会正确反向代理。有没有办法将传入的html页面中的所有请求更改为jira / additionFiles而不是additionalFiles或者让httpd服务继续为其余的依赖项提供反向代理服务(我知道http是无连接的)?如果没有,最佳做法是什么?
我的第二个问题与第一个问题一致,为什么我在初始页面加载时看到404,我将如何将其更改为200?
答案 0 :(得分:0)
我们的解决方案是在前端服务器上使用stunnel,并将所有https流量路由到服务器B,服务器B然后分发流量应该到达的分布。我正在使用服务器C并让他们使用服务器A作为代理,因此所有数据都正确地提供,服务器B只是一个中间人。