下面是关于Nginx隐藏版本号与网页缓存时间的方法:
1. 隐藏版本号
1.1 什么是版本号
Nginx是一款自由、开源、高性能、可靠性强的 Web 服务器,但是它也像其他软件一样,存在版本号信息。当攻击者知道该版本号,就可以结合漏洞进行针对性攻击,因此隐藏Nginx的版本号是一种常见的安全措施。
1.2 怎么隐藏版本号
为了隐藏Nginx的版本号,我们可以通过开启Nginx的Server Token和Server Tokens两个模块,以及进行Nginx的编译。
方法一:
通过Nginx的配置文件nginx.conf实现。
http {
server_tokens off;
…
}
上面的配置意味着禁止Nginx输出版本号信息,这种方法较为简单,适用于Nginx已经安装且没有用Nginx源码进行编译的情况。
方法二:
进行Nginx的编译,将版本信息改为其他的信息。
首先下载最新的Nginx源码,进行解压缩。进入到源码目录中,或者在configure命令后的编译参数加上no_version
cd nginx-x.x.x/
./configure --with-http_stub_status_module --with-http_gzip_static_module \
--with-http_ssl_module --with-ipv6 --prefix=/usr/local/nginx --with-http_dav_module \
--with-http_sub_module --with-cc-opt='-O3' --with-pcre \
--with-openssl=./openssl-1.1.1d -no_version
no_version是关键,这个参数可以禁止Nginx输出版本号。编译完毕之后,运行Nginx,我们可以看到它的版本信息变成以下内容:
# nginx -v
nginx version: nginx/0.0.0
至此,我们已经完成了Nginx隐藏版本号的操作。
2. 网页缓存时间的方法
网页缓存时间是指浏览器对当前页面的缓存过期时间,即缓存到什么时候过期。这个时间可以通过在http请求中报文头里的“cache-control”来设置,而Nginx可以通过配置自定义cache-control报文头来更改网页的缓存时间。
2.1 怎么设置缓存时间
将下面的配置写入Nginx的配置文件nginx.conf中即可。
http {
add_header Cache-Control "no-cache,public,max-age=31536000";
…
}
这样的配置为缓存时间设置了一年,当缓存到期时,再去服务器请求该资源,并重新设置缓存时间为一年。
在上述的配置中,我们可以看到其中三个关键字,它们代表的意义如下:
- no-cache:指示客户端不能缓存该资源;
- public:表示响应可以被客户端和中间缓存代理缓存;
- max-age:指定内容可以被缓存多长时间。
2.2 缓存时间的衍生设置
如果我们希望在用户刷新页面或者重新进入网站时,缓存时间能够自动失效并重新缓存,我们可以设置Cache-Control报头的must-revalidate选项。如果一个缓存过久的内容被重新访问,该选项将会强制要求客户端从服务器重新获取该资源。
http {
add_header Cache-Control "no-cache,public,max-age=31536000,must-revalidate";
…
}
除了Cache-Control之外,我们还可以设置类似Expires的报头,它们表示当前网页到期时间,例如:
http {
add_header Expires "Thu, 29 Oct 2026 13:32:00 GMT";
…
}
上述配置表示缓存到期的时间是2026年10月29日13:32:00。
总结
Nginx隐藏版本号与设置网页缓存时间是常见的运维操作;通过上面的步骤,在Nginx中可以很快地隐藏版本号,以及通过配置cache-control来实现强缓存,提升网站性能,节省资源。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx隐藏版本号与网页缓存时间的方法 - Python技术站