linux 编译安装nginx

近段时间在学linux服务器,由于本人嫌弃linux服务器的编译安装软件的方式特麻烦,就一直使用yum的方式安装一些常用软件,比如nginx、supervisor,也倒是挺顺利。

不过最近接到一位客户网站的漏洞扫描报告,有一个“nginx HTTP服务器检测”的漏洞,大概意思就是”能够通过查看远程主机上的HTTP标志来检测nginx  HTTP服务器”,通俗点说就是请求的返回头里面包含server:nginx的信息。

要求呢,就是返回头server不能出现nginx信息,百度了一圈解决方案,说是要修改nginx源代码,然后进行编译安装。因为本身对编译安装的操作就很模糊,所以也是懵逼的状态。

还好之前有买过一台xx云的服务器,一直闲置,就拿这台服务器来开刀吧。

进入正题:

环境 centos 7.6,nginx 1.18.0

1、安装依赖环境。详细说明可参考:https://www.cnblogs.com/brady-wang/p/12360671.html

yum -y install gcc gcc-c++ make automake autoconf pcre pcre-devel zlib zlib-devel openssl openssl-devel libtool jemalloc jemalloc-devel

2、解压nginx源码,进入源码目录,然后执行 ./configure命令,生成Makefile文件

./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-openssl= --with-pcre --with-pcre-jit --with-ld-opt=-ljemalloc
--prefix是安装目录 --user=是运行的用户,--group是所属用户组,后面还需要创建一下对应www的用户和用户组,后面的就是一些常用的模块,我也不是很明白,大家可以自行百度

3、执行make命令,检查是否有错误提示

make

4、没有错误提示的话,再执行make install命令

make install

5、顺利的话,就安装成功,如果遇到错误自行百度,然后启动nginx服务

useradd -s /sbin/nologin -M www #创建www用户和用户组
/usr/local/nginx/sbin/nginx #启动nginx
/usr/local/nginx/sbin/nginx -s stop #停止nginx
/usr/local/nginx/sbin/nginx -s reload #不停止服务,重新加载配置文件

6、编译安装是不支持systemctl命令管理nginx服务的,详细可参考:https://blog.csdn.net/weixin_42506599/article/details/104241721

创建一个nginx.service文件

vim /usr/lib/systemd/system/nginx.service

写入一下内容

[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

设置开机启动

systemctl enable nginx.service

杀掉nginx进程

killall nginx

重新加载nginx配置文件

systemctl daemon-reload

最后启动nginx服务

systemctl start nginx

7、这时候再访问网站可以看到server已经变成x-web了。

 

参考文章:

https://www.cnblogs.com/brady-wang/p/12360671.html

https://blog.csdn.net/weixin_42506599/article/details/104241721

posted @ 2021-02-20 11:06  起个名字真是难  阅读(236)  评论(0编辑  收藏  举报