微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

internet-explorer – Nginx:返回错误403并显示一条消息

如果user-agent是MSIE 6并且显示自定义错误消息,我希望Nginx返回错误403.
我使用了这段代码,一切都在第一分钟完成.然后它只是在没有消息的情况下返回错误!不知道为什么……
这是代码(我试图把’而不是’,没有’或’的纯文本,仍然没有运气):

location ~ \.PHP${
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.PHP)(/.+)$;           
    include /etc/Nginx/fastcgi.conf;
    fastcgi_pass unix:/var/run/PHP5-fpm.sock;
    if ($http_user_agent ~ "MSIE 6" ) {
      return 403 "browser not supported. Please update or change to another one.";
    }
}

编辑:忘了说它在PHP块中,因为我想阻止MSIE 6仅用于PHP请求.

解决方法:

实际上,您的配置应该可行.你可以用curl检查它:

# curl -i -H "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1" http://localhost/i.PHP
HTTP/1.1 403 Forbidden
Server: Nginx/1.3.6
Date: Wed, 26 Dec 2012 10:05:34 GMT
Content-Type: application/octet-stream
Content-Length: 62
Connection: keep-alive

browser not supported. Please update or change to another one.

访问日志也值得检查(认情况下,log_format包含$http_user_agent变量).

顺便问一下,/ etc / Nginx / fastcgi.conf中有什么?

另一件事是,如果你想让真正的MSIE 6浏览器的人看到你的消息,你最好做这样的事情:

location ~ \.PHP${
    ...
    if ($http_user_agent ~ "MSIE 6" ) {
        return 403;
    }
    error_page 403 /old_browser.html;
}

并使用您的消息创建old_browser.html.请注意,此文件应大于512字节,以确保MSIE将显示内容而不是一些标准的IE 403消息.像http://browsershots.org这样的工具非常适合调试这种情况.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐