windows下nginx隐藏HTTP 请求头文件中的Server信息

news2025/1/12 23:11:21

简介

本文主要是隐藏HTTP 请求头文件中的Server信息

解决问题主要分下面几步

一、准备编译所需要的环境

二、修改nginx源码改变配置

三、编译nginx源码生成新的nginx.exe

四、替换nginx.exe,重新启动nginx

1. 准备所需环境

环境都需要准备好,因为编译是都需要用到

1.1 MSYS

下载地址:https://www.msys2.org   

打开cmd,输入gcc --version 测试是否成功

1.2 Strawberry perl

下载地址:https://strawberryperl.com

1.3 NASM

下载地址:https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=D

(1)配置环境变量

将安装路径配置到path

(2)打开cmd,输入nasm -v 测试是否成功

1.4 Visual Studio

能够打开命令提示行,且有nmake.exe  cl.exe的版本即可

1.5 Mercurial

其实就是TortoiseHg,下载安装即可,主要是用来下载nginx的源码包

下载地址:https://www.mercurial-scm.org

打开cmd,输入hg 测试是否成功

1.6 下载nginx源码包

1.6.1 下载

方法一:打开cmd进入想要检出到的目录,执行下面的命令检出代码

hg clone http://hg.nginx.org/nginx

方法二:进入官网下载

地址:http://hg.nginx.org/nginx

选择自己想要下载的版本即可

1.6.2 修改文件

(1)修改 makefile.msvc 文件 

路径:nginx\auto\lib\openssl\makefile.msvc 

ms\do_ms改成ms\do_nasm

(2)修改ngx_http_header_filter_module.c

路径:nginx\src\http\ngx_http_header_filter_module.c

static u_char ngx_http_server_string[] = "Server: nginx" CRLF;

static u_char ngx_http_server_full_string[] = "Server: " NGINX_VER CRLF;

修改成

static u_char ngx_http_server_string[] = "Server: Please guess it!" CRLF;

static u_char ngx_http_server_full_string[] = "Server: " CRLF;

(3)修改 ngx_http_special_response.c

路径:nginx\src\http\ngx_http_special_response.c

将36行的nginx改成Please guess it!,这个可以自定义

1.7 编译环境依赖包下载

依赖包下载后直接解压到指定目录

(1)在nginx源码包目录下新建objs.msvc8目录,在objs.msvc8目录下再新建lib目录用于存放下面的依赖包

(2) 将下载的包解压后放到nginx源码包lib目录


1.7.2 OpenSSL

openssl-1.1之后的版本,目录结构及文件有了较多改变

下载地址:https://www.openssl.org/source/old

1.7.1 pcre

官网地址:http://www.pcre.org

其他下载地址:https://sourceforge.net/projects/pcre/files

1.7.3 zlib

下载地址:http://zlib.net

2. 重新编译源码生成nginx.exe

2.1 生成 Makefile 文件

2.1.1 取出 configure arguments 的相关信息

进入nginx的目录(不是源码路径)使用nginx -V取出configure arguments 后面的信息

2.1.2 开始生成Makefile文件

(1)进入MSYS的安装路径,找到msys2.exe文件,双击打开

(2)进入nginx源码目录

cd D:/Software/nginx/nginxSourceCode/nginx

(3)开始生成Makefile文件(执行下面语句,记得改成自己的路径),这个过程需要等待几分钟

auto/configure --with-cc=cl --builddir=objs.msvc8 --with-debug --prefix= --conf-path=conf/nginx.conf --pid-path=logs/nginx.pid --http-log-path=logs/access.log --error-log-path=logs/error.log --sbin-path=nginx.exe --http-client-body-temp-path=temp/client_body_temp --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp --http-scgi-temp-path=temp/scgi_temp --http-uwsgi-temp-path=temp/uwsgi_temp --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs.msvc8/lib/pcre-8.44 --with-zlib=objs.msvc8/lib/zlib-1.2.11 --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_stub_status_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_slice_module --with-mail --with-stream --with-openssl=objs.msvc8/lib/openssl-1.1.1k --with-openssl-opt='no-asm no-tests -D_WIN32_WINNT=0x0501' --with-http_ssl_module --with-mail_ssl_module --with-stream_ssl_module

2.2 编译Makefile文件

打开 Visual Studio 的命令提示行,我用的是 Visual Studio 2019

(1)进入nginx源码目录

cd D:\Software\nginx\nginxSourceCode\nginx

(2)开始编译,这个过程需要等待几分钟

nmake -f build/Makefile

(3)编译成功后生成一个nginx.exe

(4)将新生成的nginx.exe替换原来的nginx.exe即可

3. 测试

重新启动nginx,在浏览器访问127.0.0.1,或者其它由nginx代理的地址,可以看到Server的信息已经没有了


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/94399.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

精品spring boot+MySQL线上点餐系统vue

《spring bootMySQL线上点餐系统》该项目含有源码、论文等资料、配套开发软件、软件安装教程、项目发布教程等 使用技术: 操作系统:Windows 10、Windows 7、Windows 8 开发语言:Java 使用框架:spring boot 前端技术&#xff…

大数据毕业设计人体跌倒检测系统

文章目录前言1 实现方法传统机器视觉算法基于机器学习的跌倒检测SVM简介SVM跌倒检测原理算法流程算法效果实现代码深度学习跌倒检测最终效果网络原理最后前言 背景和意义 在美国,每年在65岁以上老人中,平均每3人中就有1人发生意外跌倒,每年…

[附源码]Node.js计算机毕业设计关于人脸识别的实验教学管理系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

嵌入式分享合集122

一、分析电容降压电路工作原理 电容降压电路,因其成本低廉、体积小而被广泛地使用,此一优点足以掩盖其它所有缺点:输出电流小(一般控制在100mA以内),与市电直通非隔离而存在安全隐患,输出电压波…

饥荒服务器搭建(windows)

文章目录1. 获取服务器票据2. 新建游戏存档3. 饥荒服务器配置1. 获取服务器票据 步骤1:登录Klei官网 步骤2:点击菜单栏游戏——选择饥荒服务器 步骤3:创建服务器获取票据,后面将会用到。 2. 新建游戏存档 步骤1:下载…

Python开发游戏?也太好用了吧

程序员宝藏库:https://gitee.com/sharetech_lee/CS-Books-Store 当然可以啦! 现在日常能够用到和想到的场景,绝大多数都可以用Python实现。 效果怎么样暂且不提,但是得益于丰富的第三方工具包,的确让Python能够很容易…

二进制包安装公有云版k8s

目录公有云版k8s的架构是怎样的公有云中创建k8s实例的过程如下二进制法创建k8s的一般过程Kubernetes的重要性check nodes每台服务器执行基线配置CA rootetcd HA cluster根据CA根证书创建etcd的专有CA证书将etcd注册成为systemd服务配置各master节点的etcd.confansible配置各个m…

4线SPI驱动OLED常规操作

拿到一块点阵屏幕,首先找卖家拿驱动例程 步骤 目录 1.void LCD_IO_Cfg(void) 2.void wr_cmd(u8 wrcmd) 3.void wr_data(u8 wrdata) 4.void init_lcd(void) 5.void disp_all(void) 6.void Fresh(void) 注:根据商家的时序图可以知道数据在上升沿/下降…

[附源码]Node.js计算机毕业设计高校学科竞赛报名系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

CBCC3 – A CBCC Algorithm with Improved Exploration/Exploitation Balance

0、论文背景 本文是在CBCC1和CBCC2的基础上提出了CBCC3。在本文中,证明了过度探索和过度开发是现有CBCC变体中性能损失的两个主要来源。在此基础上,提出了一种新的基于贡献的算法,可以在探索和开发之间保持更好的平衡。 Omidvar M N, Kazimi…

复现readme中的一个坑...

今天在运行一个项目的时候“Molecule Optimization via Fragment-based Generative Models”:GitHub - ninglab/Modof: The implementation of Modof for Molecule Optimization 然后妈的死活运行不出来,就是说在运行readme的时候都不行,我看…

Win10系统下与VMware中Ubuntu20.04建立共享文件夹

一、在VMware中设置 二、在Ubuntu中设置 1.在终端中输入下面命令,列出步骤一中设置的VMware共享文件夹名称,说明可以挂载 ~$ vmware-hgfsclient 返回 ubuntushare 2.执行下面命令,创建共享文件夹专用的挂载目录 ~$ sudo mkdir -p /mnt/hgfs …

基于ESP32-S3方案的2.1寸旋钮屏ZX2D10来了,同步分享ESP32应用功能技术之「WEB API接口」

启明智显基于ESP32-S3与国产芯高效开发平台8ms设计开发的一款磁编码结构的旋钮屏。结构紧凑、简单,外观精致;支持WIFI、蓝牙,语音交互等功能。 产品说明: 1. 使用乐鑫ESP32-S3 WI-FI SOC芯片,SOC提供WI-FI与BLE连接能力…

Java容器源码重点回顾——CopyOnWriteArrayList

1. CopyOnWriteArrayList概述 之前介绍过ArrayList,但是我们知道ArrayList是线程不安全的。如果多个线程同时写数据,就会抛出ConcurrentModificationException。然后我们又学过Vector,它的实现方式是在方法中都加入synchronized关键字&#…

selenium自动测试常用脚本

一、控制已经打开页面的浏览器(已登录状态) 1、简述: 自动化执行时,一些页面操作需要用户是登录状态才能进行访问。如果每次运行自动化脚本都需要重新登录、输入短信验证码,不利于自动化快速运行。因此,需…

[附源码]Python计算机毕业设计高校学生宿舍管理信息系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

C语言易错的选择判断题解析

有定义语句:int a10;,则表达式a的值是10。 ( A ) A.正确 B.错误 以下程序段完全正确的是( A ) A.int k, *p&k; scanf(“%d”,p); B.int k,*p: *p&k;scanf(“%d”,p); C.int *p;scanf(“%d”,p); D.51 以下程序段运行后,循环体运行…

Java发布和溢出简述

发布和溢出前言前置知识发布溢出简述类型案例环境发布溢出溢出类型1——未完全初始化就企图获取该对象中数据溢出类型2——在构造函数中调用非private和final的方法前言 回顾《Java并发编程实战》,这里附上一些总结和小案例加深理解。这里重点是对溢出的阐释。 前…

差分约束

前置知识: 最短路问题、SPFA判环,为了保证学习效果,请保证已经掌握前置知识之后,再来学习本章节! 引出 当我们遇到一个不等式组,比如下面这个 \begin{cases} x_{1}-x_{3} \leq 5 \\ x_{1}-x_{2} \leq 2 \\ x_{2}-x_{…

3.2 图像分类

文章目录LeNet(小图像)LeNet在手写数字识别上的应用LeNet在眼疾识别数据集iChallenge-PM上的应用数据集准备查看数据集图片定义数据读取器启动训练AlexNet(大图像)VGG(深度)GoogLeNet(深度兼广度…