关于Nginx作为http-web服务器时对404错误页面的配置-以及安全加固-隐藏404的状态码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Nginx作为http-web服务器时对404错误页面的配置-以及安全加固-隐藏404的状态码相关的知识,希望对你有一定的参考价值。
当我们访问一下Ngin部署的网站时,如果访问一个不存在的资源时,默认服务端会返回404错误,如下所示
其实这个页面,我们也是可以自己创建一个页面作为404的返回的,可以通过
即可以通过error_page code
... [=
[response
]] uri
; 进行配置
其他说明: 关于error_page指定能写的位置段为:http, server, location, if in location
当然笔者是建议配置到单独的server,有些情况也可以配置到location中,这样不影响其他server
一个很经典的配置,可以当客户端访问得到404错误页面是,可以返回给他们首页 -(当然创建一个新的页面也可以的),方法如下:
error_page 404 /index.html;
但是这样,也还有一个小问题,就是404页面,我们虽然指定了,但是通过开发者工具或者curl -I 的方式还是能看到 HTTP/1.1 404 Not Found 的响应
如果需要连code也隐藏,可以将404设置为200成功的响应,再为其配置一个单独的页面,如下配置即可:
error_page 404 =200 /index.html;
语法要求如下,注意空格,和=200要求是一个整体,这样配置下来,对于外部,即使访问的不存在的资源,也会指向到首页,而且还隐藏了404错误的http code
并返回:HTTP/1.1 200 OK , 这样我们对于信息的暴露又少了一点,页面对于普通用户来说,也更加的友好了
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17341543.html
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
博主的文章没有高度、深度和广度,只是凑字数。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!
关于LVS+Nginx为什么会被同时使用的思考
最初的理解
(也可以每个nginx都挂在上所有的应用服务器)
nginx大家都在用,估计也很熟悉了,在做负载均衡时很好用,安装简单、配置简单、相关材料也特别多。
lvs是国内的章文嵩博士的大作,比nginx被广泛接受还要早7年,并且已经被红帽作为了系统内置软件,可谓很牛了。lvs相对于nginx来说配置上就要相对复杂一些。
但是,有时候我们会看到大牛们分享的经验里面是lvs+nginx作为负载均衡了,一直想不明白这是个什么道理。
为什么会出现两者被同时使用呢?其实,这要从两者的各自优势来说了。
nginx用来做http的反向代理,能够upsteam实现http请求的多种方式的均衡转发。由于采用的是异步转发可以做到如果一个服务器请求失败,立即切换到其他服务器,直到请求成功或者最后一台服务器失败为止。这可以最大程度的提高系统的请求成功率。
lvs采用的是同步请求转发的策略。这里说一下同步转发和异步转发的区别。同步转发是在lvs服务器接收到请求之后,立即redirect到一个后端服务器,由客户端直接和后端服务器建立连接。异步转发是nginx在保持客户端连接的同时,发起一个相同内容的新请求到后端,等后端返回结果后,由nginx返回给客户端。
进一步来说:当做为负载均衡服务器的nginx和lvs处理相同的请求时,所有的请求和响应流量都会经过nginx;但是使用lvs时,仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回。
也就是,当作为后端的服务器规模庞大时,nginx的网络带宽就成了一个巨大的瓶颈。
但是仅仅使用lvs作为负载均衡的话,一旦后端接受到请求的服务器出了问题,那么这次请求就失败了。但是如果在lvs的后端在添加一层nginx(多个),每个nginx后端再有几台应用服务器,那么结合两者的优势,既能避免单nginx的流量集中瓶颈,又能避免单lvs时一锤子买卖的问题。
参考文章:
章文嵩:LVS项目介绍
moon:强大的nginx反向代理异步传输模式(原理)
yaoweibin:nginx健康检查
追马博客:LVS+keepalived+nginx+tomcat部署实现
补充(20160731 下午2:07):
在后续继续了解这部分内容时,发现了这两个帖子:
1. 有了LVS,还要apache,nginx有什么用?
2.从一个开发的角度看负载均衡和LVS—–注意看最后一个lvs集群化的图,nginx和rs是一对一连接的。
从以上文章来看,lvs+nginx组合使用的原因主要是用lvs来做负载均衡(因为工作在4层,效率高),nginx来做静态文件的处理。
这里第二篇文章,和lvs的后续维护者之一的[吴佳明_普空的ppt](http://velocity.oreilly.com.cn/2012/ppts/pukong.pdf
)中比章博士的文章中多出了一种转发模式,也就是full_nat模式,这种模式下,所有的响应也要经过lvs服务器作为出口返回给客户端。
lvs在full_nat的模式下,是否还是同步的模式呢?我猜想应该是的,因为lvs工作在4层,所以可能当前出错的响应要映射到之前的那一次请求(因为没有解析http包),所以也就做不到把错误转发到其他的应用服务器上重新处理。
另外,这个补充是不是就完全的否定了昨天(也就是补充之前的那一大段)的内容呢?我觉得并没有。昨天的理解可能不是正规大型互联网在使用的模式(当然,这里我不能确定,因为我没有大型互联网的经验),但是理论应该是对的。
具体一点,lvs+nginx的组合nginx用来做静态文件的处理的场景下,如果一次请求失败了,那么久不能被重新处理了,当然你的nginx也可以后挂1个以上的应用服务器(这样的话nginx实质上也是起到了lvs均衡补充的效果)。另外就是,nginx不是单单的作为静态文件的处理,而是作为lvs的一个补充,互相弥补均衡上的不足。
那么你可能会说lvs在4层上处理的高效就不复存在了,确实是的,这点要承认,但是,我们提高了系统请求的成功率,两者需要各自去选择和权衡。
另外,需要说的一点是,静态内容其实我们还可以借助cdn去处理,而不是单单的依靠nginx或者apache去处理。
补充(2016年12月17日 上午11:24)
现在到了比较大一些的互联网公司,也看了京东的用法(可以看开涛的nginx+lua系列http://www.iteye.com/blogs/subjects/nginx-lua)。
lvs+nginx的使用中,nginx还可以作为一个中间环节来减小后端tomcat的服务压力,以及做一些业务切换、分流、前置缓存的功能。
来源:http://blog.csdn.net/BuquTianya/article/details/52076153
以上是关于关于Nginx作为http-web服务器时对404错误页面的配置-以及安全加固-隐藏404的状态码的主要内容,如果未能解决你的问题,请参考以下文章