原因:
目前越来越多的人选择使用nginx,nginx在web处理、生成、负载等方面显示出独特的魅力。但是很多人喜欢直接用基本参数实现Nginx功能。有一些细节需要注意。
话不多说,今天就开门见山讨论两个问题吧
1。nginx版本号修改和隐藏
好处:加强安全性,防止某些人发现指定版本漏洞给***。
2。记录每个请求花费的时间:
更详细地了解请求所需的时间。
###############################################
1。nginx版本号修改和隐藏
1,1)nginx版本号的修订版
检查当前Nginx版本号和编译信息
[root@nginxsbin]#/usr/local/nginx/sbin/nginx-V
nginx版本:nginx/1.9.2
由gcc4.4.720120313(红帽4.4.7-16)(GCC)构建
使用OpenSSL1.0.1e-FIPS2013年2月11日构建
TLSSNI支持已启用
配置参数:-user=nginx-group=nginx-prefix=/usr/local/nginx-with-http_stub_status_module-with-http_SSL_module-with-http_realip_module
[root@nginxsbin]#
上面可以看到,Nginx版本是1.9.2,下面有一些编译Nginx的参数。
那么风险来了:
1)当后端程序停止,或者压力测试等。,Nginx的版本号会很快曝光。
2)curl或者一些工具可以轻松获取你的Nginx版本信息
3)或者,你根本不想让人知道你用的Nginx
处理方式:
编辑nginx源代码中的src/core/nginx.h头文件
改为(可以随意修改)
它需要重新编译和安装(注意不要在网上交易中乱来,除非你有足够的技能进行平滑的修改)
[root@nginxnginx-1.9.2]#/usr/local/nginx/sbin/nginx-V
nginx版本:IIS/IIS
由gcc4.4.720120313(红帽4.4.7-16)(GCC)构建
使用OpenSSL1.0.1e-FIPS2013年2月11日构建
TLSSNI支持已启用
配置参数:-user=nginx-group=nginx-prefix=/usr/local/nginx-with-http_stub_status_module-with-http_SSL_module-with-http_realip_module
[root@nginxnginx-1.9.2]#
[root@nginxconf]#curl-I192.168.1.223
HTTP/1.1200OK
服务器:IIS/IIS
日期:Fri,2016年3月25日21:31:38GMT
Content-Type:text/html
Content-Length:612
最后修改时间:2016年3月24日星期四21:38:26GMT
连接:保持活动
ETag:"56f45e52-264"
接受范围:字节
[root@nginxconf]#
1.2)Nginx版本号被隐藏
nginx的HttpCoreModule提供了一个名为server_tokens的指令。我将把这条指令设置为“server_tokensoff”。
1。修改nginx.conf
将server_tokensoff插入HTTP部分;
#2。编辑php-fpm配置文件,比如fastcgi.conf(如果更深入,当然可以不用做这一步)
找到了:
fastcgi_paramSERVER_SOFTWAREnginx/$nginx_version;
改为:
fastcgi_paramSERVER_SOFTWAREnginx;
3。重启或重新加载Nginx。
2,在访问日志中记录每个请求的时间
[root@nginx~]#tail-f/usr/local/nginx/logs/access.log
192.168.1.243---[26/Mar/2016:05:08:23+0800]"GET/testHTTP/1.1"302160"-"Mozilla/5.0(WindowsNT6.3;WOW64)AppleWebKit/537.36(KHTML,像壁虎一样)Chrome/54.0.2840.87Safari/537.36""-"
192.168.1.243---[26/Mar/2016:05:08:34+0800]"GET/HTTP/1.1"3040"-"Mozilla/5.0(WindowsNT6.3;WOW64)AppleWebKit/537.36(KHTML,像壁虎一样)Chrome/54.0.2840.87Safari/537.36""-"
192.168.1.243---[26/Mar/2016:05:08:41+0800]"GET/index.PHPHTTP/1.1"302160"-""Mozilla/5.0(WindowsNT6.3;WOW64)AppleWebKit/537.36(KHTML,像壁虎一样)Chrome/54.0.2840.87Safari/537.36""-"
查看Nginx日志相关的访问记录:(默认格式)
log_formataccess'$remote_addr-$remote_user[$time_local]"$request"'
'$status$body_bytes_sent"$http_referer"'
'"$http_user_agent""$http_x_forwarded_for"';
access_loglogs/access.logaccess;
修改为:
log_formataccess'$remote_addr-$remote_user[$time_local]''"$request"$status$body_bytes_sent'
'"$http_referer""$http_user_agent"''elapsed=${request_time}s';(注意Apache这个参数是us)
access_loglogs/access.logaccess;
检测Nginx配置文件,并重启服务(也可以重新安装)
[root@nginx~]#/usr/local/nginx/sbin/nginx-t
nginx:配置文件/usr/local/nginx/conf/nginx.conf语法没问题
nginx:配置文件/usr/local/nginx/conf/nginx.conf测试成功
[root@nginx~]#/etc/init.d/nginxreload
[root@nginx~]#
[root@nginxlogs]#tail-faccess.log
192.168.1.243---[22/Nov/2016:10:45:52+0800]"GET/HTTP/1.1"3040"-"Mozilla/5.0(WindowsNT6.3;WOW64)AppleWebKit/537.36(KHTML,像壁虎一样)Chrome/54.0.2840.87Safari/537.36"elapsed=0.000s
192.168.1.243---[22/Nov/2016:10:45:52+0800]"GET/HTTP/1.1"3040"-"Mozilla/5.0(WindowsNT6.3;WOW64)AppleWebKit/537.36(KHTML,像壁虎一样)Chrome/54.0.2840.87Safari/537.36"elapsed=0.000s
192.168.1.243---[22/Nov/2016:10:45:54+0800]"GET/HTTP/1.1"3040"-"Mozilla/5.0(WindowsNT6.3;WOW64)AppleWebKit/537.36(KHTML,像壁虎一样)Chrome/54.0.2840.87Safari/537.36"elapsed=0.000s
官网对于日志相关参数给出的解释是:ModuleNGX_http_log_Module
$远程地址,$http_x_forwarded_用于记录客户端IP
$remote_user记录客户端用户名
$time_local通用日志格式的本地时间
$request记录请求的URL和HTTP协议
$status记录请求状态
$body_Bytes_sent发送给客户端的字节,不包括头的大小;此变量与Apachemod_log_config的“%B”兼容
$Bytes_sent发送到客户端的总字节数
$连接的序列号
$connection_requests当前通过连接获得的请求数
$msec日志写入时间。单位是秒,精度是毫秒
$pipe如果请求是通过HTTP管道发送的,则管道值为“P”,否则为“.”
$http_referer记录它是从哪个页面链接被访问的
$http_user_agent记录有关客户端浏览器的信息
$request_length请求的长度(包括请求行、请求头和请求体)
$request_time请求处理时间,单位为秒,精度为毫秒;读取客户端的第一个字节,直到最后一个字符被发送到客户端,并且日志被写入
$time_ISO8601ISO8601标准格式的当地时间
nginx支持的参数。/connfigure(可以在帮助中查看)
检查Nginx安装了哪些模块
nginx:配置文件/usr/local/nginx/conf/nginx.conf语法没问题
nginx:配置文件/usr/local/nginx/conf/nginx.conf测试成功
[root@nginx~]#/etc/init.d/nginxreload
[root@nginx~]#
[root@nginx~]#/usr/local/nginx/sbin/nginx-V
nginx版本:IIS/IIS
由gcc4.4.720120313(红帽4.4.7-16)(GCC)构建
使用OpenSSL1.0.1e-FIPS2013年2月11日构建
TLSSNI支持已启用
配置参数:-user=nginx-group=nginx-prefix=/usr/local/nginx-with-http_stub_status_module-with-http_SSL_module-with-http_realip_module
[root@nginx~]#
有问题可以联系博主:http://renzhiyuan.blog.51cto.com[/S2/]
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)