反向代理浏览器无法识别/不兼容

反向代理浏览器无法识别/不兼容

我有指向 Cloud9 安装的反向代理设置 (apache2)。代理工作正常,Cloud9 站点出现。但 Cloud9 需要特定浏览器版本,并指出该浏览器不兼容。我已使用最新的 Firefox 和 Chrome 进行了测试。

我对 Apache 和反向代理没有太多经验,但我猜想代理会隐藏浏览器版本。我该如何转发此信息?或伪造已知的工作版本?

答案1

当使用 apache 的 mod_proxy 反向代理到后端服务器时,apache 服务器会对后端服务器执行符合标准 RFC 2616 的 HTTP 代理请求。

这意味着精确的请求数据(方法、标头和正文)被传递到后端,并添加包含原始客户端 IP 的 X-Forwarded-For:标头。

Apache 不会在转发的请求中“弥补”任何内容。

在 cloud9 后端放置一个显示所有请求标头的 CGI 页面,然后将它们与浏览器标头进行比较。

答案2

问题在于 Cloud9 在其 HTML 页面中使用了绝对路径(不太好)。如果您在 Chrome 中打开开发人员工具,您会看到一长串 404 错误。

我通过使用一些 Apache 重写规则解决了该问题:

我当前的 Apache 配置:

 RewriteEngine On
 RewriteRule   ^/socket.io/(.*) /editor/socket.io/$1 [P]
 RewriteRule   ^/static/(.*) /editor/static/$1 [P]
 RewriteRule   ^/workspace/(.*) /editor/workspace/$1 [P]

 ProxyPass /editor/ http://127.0.0.1:3000/
 ProxyPassReverse /editor/ http://127.0.0.1:3000/
 <Proxy *>
   Order deny,allow
   Allow from all
 </Proxy>

相关内容