我正在把头发拉出来,应该是一个非常简单的问题.我们通过F5 BigIP运行WebSphere IHS(Apache).BigIP正在为我们进行https翻译.我们的网址(已更改为网页,无效)为https://superniftyserver.com/lawson/portal.
当有人在门户网站之后没有斜杠的情况下输入时,Apache假定"门户"是文件而不是目录.当Apache发现它是什么时,它会发送301永久重定向.但由于Apache只知道http,它会将URL发送为http://superniftyserver.com/lawson/portal/,然后会产生问题.
所以我尝试了mod_rewrite的服务器级httpd.conf更改,这是我尝试过的几十种组合之一.
RewriteRule上的RewriteEngine ^/lawson/portal(.*)/ lawson/portal/$ 1
我也试过RewriteRule ^/lawson/portal $/lawson/portal /
还有很多其他的事情......我错过了什么?
如果你无法得到RewriteRule语法的答案,这里有两个其他选项:在BigIp上编写一个自定义iRule(参见F5 DevCentral),查找301个响应并将它们转换为SSL; 让URL传递到您的WebSphere服务器并执行发送HTTPS的编程重定向.但是,由于F5终止了SSL连接,因此必须设置您配置的自定义标头(请参阅PQ86347),以便Java request.getScheme()按预期工作.
固定!
SOL6912:配置HTTP配置文件以重写URL,以便从HTTP服务器重定向指定HTTPS协议
更新时间:8/7/07 12:00 AM
ClientSSL虚拟服务器通常配置为接受来自客户端的HTTPS连接,解密SSL会话,并将未加密的HTTP请求发送到Web服务器.
当请求的URI不包含尾部斜杠(正斜杠,例如/,在URI的末尾)时,某些Web服务器会生成礼貌重定向.如果没有尾部斜杠,Web服务器将首先将URI中指定的资源视为文件.如果找不到该文件,Web服务器可能会搜索具有相同名称的目录,如果找到,请使用尾部斜杠将HTTP 302重定向响应发送回客户端.重定向将以HTTP模式而不是HTTPS返回到客户端,从而导致SSL会话失败.
以下是HTTP 302重定向响应如何导致SSL会话失败的示例:
·要请求SSL会话,用户键入https://www.f5.com/stuff,不带斜杠.
·客户端浏览器向ClientSSL虚拟服务器发送SSL请求,该服务器驻留在BIG-IP LTM系统上.
·BIG-IP LTM系统然后解密请求并向Web服务器发送GET/stuff命令.
·由于/ stuff文件在Web服务器上不存在,但存在/ stuff /虚拟目录,因此Web服务器会为该目录发送HTTP 302重定向响应,但会向该资源附加一个尾部斜杠.当Web服务器发送HTTP 302重定向响应时,它指定HTTP(而不是HTTPS).
·当客户端收到HTTP 302重定向响应时,它会向BIG-IP LTM虚拟服务器发送一个指定HTTP(而不是HTTPS)的新请求.因此,SSL连接失败.
配置HTTP配置文件以重写URL
在BIG-IP LTM版本9.x中,您可以配置HTTP配置文件以重写URL,以便从HTTP服务器重定向指定HTTPS协议.为此,请执行以下过程:
登录配置实用程序.
单击本地流量.
单击配置文件.
单击"创建"按钮.
输入配置文件的名称.
从父配置文件下拉菜单中选择http.
在"设置"下,根据您的配置将"重定向重写"设置为"全部","匹配"或"节点"
例如:
o选择"全部"以将任何HTTP 301,302,303,305或307重定向重写为HTTPS
o当请求的路径和查询URI组件与重定向相同时,选择"匹配"以重写重定向(尾部斜杠除外)
o当重定向URI包含节点IP地址而不是主机名时,选择节点重写重定向,并且您希望系统将其更改为虚拟服务器地址
单击完成.
您现在必须将新的HTTP配置文件与ClientSSL虚拟服务器相关联.