Nginx版本号优化及记录用户请求需要的时间

Nginx版本号优化及记录用户请求需要的时间,第1张

Nginx版本号优化及记录用户请求需要的时间

原因:

目前越来越多的人选择使用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/]


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/778161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存