Nginx隐藏版本号与网页缓存时间的方法

yizhihongxing

下面是关于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技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 部署django项目安装uwsgi出错的解决方法总结

    下面是详细讲解“部署django项目安装uwsgi出错的解决方法总结”的完整攻略。 部署django项目安装uwsgi出错的解决方法总结 1. 安装uwsgi时出现的错误 在对Django项目进行部署时,常常需要使用到uwsgi,但是在安装时可能会出现以下错误: Command "/usr/local/bin/python3.6 -u -c &qu…

    人工智能概览 2023年5月25日
    00
  • Linux下监视NVIDIA的GPU使用情况详解

    下面是“Linux下监视NVIDIA的GPU使用情况详解”的完整攻略: Linux下监视NVIDIA的GPU使用情况详解 介绍 在Linux系统中,我们可以通过一些命令和工具来监视NVIDIA的GPU使用情况。这些信息对于开发GPU加速的应用程序很有用,可以优化程序性能,并避免程序运行时出现各种问题。 下面我们将介绍一些常用的命令和工具,帮助你在Linux系…

    人工智能概览 2023年5月25日
    00
  • django实现日志按日期分割

    下面为你详细讲解Django实现日志按日期分割的完整攻略。 1. 安装相关包 首先需要安装Django的日志扩展包django-log-request-id和分割日志文件的包watchtower。 pip install django-log-request-id pip install watchtower 2. 配置日志 在Django项目的settin…

    人工智能概览 2023年5月25日
    00
  • node实现简单的增删改查接口实例代码

    让我们来详细讲解如何使用 Node.js 实现简单的增删改查接口,以下是完整攻略: 准备工作 在开始我们的实例代码前,需要先确保你已经完成了以下准备工作: 安装 Node.js 了解基本的 JavaScript 语法和操作 安装并掌握使用 Express 框架 新建项目并安装依赖 在你的本地环境中新建一个目录,进入该目录并初始化项目: mkdir myPro…

    人工智能概论 2023年5月24日
    00
  • django-crontab 定时执行任务方法的实现

    让我来详细讲解一下“django-crontab 定时执行任务方法的实现”的完整攻略。 什么是django-crontab django-crontab是一款基于Django框架的轻量级Python库,它通过Python的定时任务模块,为我们提供了一种定时执行任务的方法,可以设置Django的管理脚本定期运行。 django-crontab的安装 首先,我们…

    人工智能概览 2023年5月25日
    00
  • Vue中的项目打包及部署全流程

    当我们使用Vue开发完毕一个项目后,需要对项目进行打包和部署。本文将介绍Vue中的项目打包及部署全流程,并提供两个示例。 打包项目 在Vue项目根目录下执行如下命令即可对项目进行打包: npm run build 执行完成后,我们可以在项目根目录下的dist目录下找到打包好的文件,其中包含一个HTML文件、一些CSS和JS文件以及其他所需的资源文件。 部署项…

    人工智能概览 2023年5月25日
    00
  • django 实现手动存储文件到model的FileField

    当我们在使用Django开发Web应用时,常常需要让用户上传文件,比如头像、照片等,我们可以通过使用Django的FileField字段将这些文件存储到数据库中。但是,有时候我们可能需要手动将文件保存到FileField字段所关联的文件中。本文将详细讲解如何在Django中手动保存文件到FileField字段所关联的文件中。 1. 准备工作: 首先,我们需要…

    人工智能概论 2023年5月25日
    00
  • windows环境下tensorflow安装过程详解

    Windows环境下TensorFlow安装过程详解 1. 环境准备 首先需要确保你的计算机上已经安装了Python环境。如果还没有安装,请前往官网下载并安装Python。 2. 安装TensorFlow 有多种方式可以安装TensorFlow,这里介绍通过pip命令安装的方法。 在命令行中输入以下命令,即可通过pip安装TensorFlow: pip in…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部