[toc]
nginx安装
1.源码编译安装
1.1 下载nginx源码包
export NG_VERSION=1.22.0
wget https://nginx.org/download/nginx-${NG_VERSION}.tar.gz
1.2 编译安装nginx
1.2.1 创建www用户
useradd www -s /sbin/nologin -M
1.2.2 安装依赖包
yum -y install gcc gcc-c++ zlib zlib-devel openssl openssl-devel pcre-devel httpd-tools
1.2.3 解压缩包
tar xf nginx-${NG_VERSION}.tar.gz && cd nginx-${NG_VERSION}
1.2.4 编译安装
./configure \
--prefix=/usr/local/nginx \
--user=www \
--group=www \
--sbin-path=/usr/sbin/nginx \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_realip_module \
--with-pcre \
--with-file-aio
make -j `nproc` && make install
编译参数说明
更多参数请使 用./configure --help
查看或者查看官方编译安装说明文档
参数 | 说明 |
---|---|
--prefix | nginx安装路径 |
--user | nginx运行用户 |
--group | nginx运行用户组 |
--sbin-path | nginx可执行文件路径 |
--conf-path | nginx配置文件路径 |
--pid-path | nginx pid文件路径 |
--lock-path | nginx锁文件路径 |
--error-log-path | nginx错误日志路径 |
--http-log-path | nginx访问日志路径 |
--with-http_gzip_static_module | 支持.gz压缩文件 |
--with-http_stub_status_module | 支持nginx基本状态信息访问 |
--with-http_ssl_module | 支持nginx https |
--with-pcre | 强制使用pcre库 |
--with-file-aio | 支持异步IO |
--with-http_realip_module | 将客户端地址更改为在指定的头字段中发送的地址 |
--without-http_scgi_module | 禁止将请求传递到SCGI服务器 |
--without-http_uwsgi_module | 禁止将请求传递到uwsgi服务器 |
--without-http_fastcgi_module | 禁止将请求传递到FastCGI服务器 |
我们可以在nginx的配置文件中加入 server_tokens off
参数来隐藏nginx版本,如下图所示
如果想要把浏览器显示的 nginx
也修改,需要修改nginx源码中的4个文件,这里把 nginx
修改为 come baby
文件一 src/core/nginx.h
- 修改前
#define NGINX_VER "nginx/" NGINX_VERSION
#define NGINX_VAR "NGINX"
- 修改后
修改命令 sed -i -e "s/nginx/$NGX/" -e "s/\"NGINX\"/\"$NGX\"/" src/core/nginx.h
#define NGINX_VER "come baby/" NGINX_VERSION
#define NGINX_VAR "come baby"
文件二 src/http/ngx_http_header_filter_module.c
- 修改前
49行
static u_char ngx_http_server_string[] = "Server: nginx" CRLF;
- 修改后
修改命令 sed -i "s/: nginx/: $NGX/" src/http/ngx_http_header_filter_module.c
static u_char ngx_http_server_string[] = "Server: come baby" CRLF;
文件三 src/http/ngx_http_special_response.c
- 修改前
36行
"<hr><center>nginx</center>" CRLF
- 修改后
修改命令 sed -i "s/>nginx/>$NGX/" src/http/ngx_http_special_response.c
"<hr><center>come baby</center>" CRLF
文件四 src/http/v2/ngx_http_v2_filter_module.c
- 修改前
480行
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0,
480 "http2 output header: \"server: nginx\"");
481 }
- 修改后
修改命令 sed -i "s/: nginx/: $NGX/" src/http/v2/ngx_http_v2_filter_module.c
ngx_log_debug0(NGX_LOG_DEBUG_HTTP, fc->log, 0,
480 "http2 output header: \"server: come baby\"");
481 }
使用如下命令修改
src/core/nginx.h
src/http/ngx_http_header_filter_module.c
src/http/ngx_http_special_response.c
src/http/v2/ngx_http_v2_filter_module.c
#export NGX='What The Fuck ?'
export NGX='Are you fucking kidding me ?'
sed -i.bak -e "s/nginx\//$NGX/" -e "s/\"NGINX\"/\"$NGX\"/" src/core/nginx.h
sed -i.bak "s/: nginx/: $NGX/" src/http/ngx_http_header_filter_module.c
sed -i.bak "s/>nginx/>$NGX/" src/http/ngx_http_special_response.c
sed -i.bak "s/: nginx/: $NGX/" src/http/v2/ngx_http_v2_filter_module.c
验证
$ curl -I spug.test.com
HTTP/1.1 502 Bad Gateway
Server: come baby
Date: Wed, 03 Feb 2021 03:54:36 GMT
Content-Type: text/html
Content-Length: 154
Connection: keep-alive