nginx安装和隐藏版本号

目录

1.Nginx概念

1.1Nginx

 1.2Nginx官网

 1.3tengine:

2.隐藏nginx版本号

 2.1查看百度web应用

 2.2隐藏nginx服务器版本号

 2.3上传软件包解压

2.4更改源码隐藏软件名称和版本号

2.3安装nginx依赖包 

2.4预编译 

2.5编译安装

 2.6启动nginx

2.7查看端口号

3.测试版本号、名称是否隐藏

3.1网站测试 

4.配置文件nginx.conf

5.修改nginx运行账号 

5.1查看nginx当前运行账号

 5.2创建nginx程序账号

5.3修改nginx运行账号

 5.4添加path环境变量

5.5重载nginx


1.1Nginx

Nginx ("engine x") 是一个轻量级、高性能的WEB服务器软件和反向代理服务器。

web应用 分为:

静态资源:文本文件,或图片,音频和视频等等
动态资源:使用编程语言开发的通常要链接数据库和数据库交互
nginx默认提供静态资源访问,需使用fastcgi来执行使用动态资源

Nginx以事件驱动(epoll)的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。

 1.2Nginx官网

Nginx官网:  http://nginx.org

 Nginx官方文档:  nginx documentation

 Nginx官网下载地址:  nginx: download

 

 1.3tengine:

 Tengine是由阿里淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。,在遵循GPL的原则上进行二次开发,在nginx基础上进行改进。


2.隐藏nginx版本号

 2.1查看百度web应用

clurl命令访问web网站

HTTP协议端口号默认是80端口

图中200 OK 是web应答状态码200代表访问成功的状态码

server:是web用于的隐藏web软件名称和版本号

 2.2隐藏nginx服务器版本号

编译前的优化主要是用来修改程序名等等,目的更改源码隐藏软件名称和版本号,安装zlib-devel、pcre-devel等依赖包。

 2.3上传软件包解压

 

 tar -zxvf nginx-1.10.3.tar.gz -C /usr/local/src/   #解压到/usr/local/src/下

2.4更改源码隐藏软件名称和版本号

cd /usr/local/src/nginx-1.10.3/

vim src/core/nginx.h

13 #define NGINX_VERSION      "8.8.8"  #修改版本号
 14 #define NGINX_VER          "web/" NGINX_VERSION  #修改服务器名称

vim src/http/ngx_http_header_filter_module.c 

49 static char ngx_http_server_string[] = "web" CRLF;    修改标红部分

修改HTTP头的信息中的server字段,防止回显版本号

 [root@localhost nginx-1.10.3]# vim src/http/ngx_http_special_response.c 

http错误码的返回,有时候我们页面程序出现错误,Nginx会代我们返回相应的错误代码,回显的时候,会带上nginx和版本号,我们把他隐藏起来.

 22 "<hr><center>" NGINX_VER "</center>" CRLF  老版本这里需要修改为web,现在这里不需要修改,因为它调用了NGINX_VER变量

 29 "<hr><center>nginx</center>" CRLF    #将nginx修改

2.3安装nginx依赖包 

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

2.4预编译 

 groupadd www  #添加www组

[root@web ~]# useradd -g www www -s /sbin/nologin  #创建nginx运行账户www并加入到www组,不允许www用户直接登录系统。

创建nginx模块:

[root@web nginx-1.10.3]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www

选型说明: 

--with-http_dav_module 模块nginx编译时可通过启用对webdave的支持,WebDAV一种基于 HTTP 1.1版本协议的通信协议,在GET、POST、HEAD等几个HTTP标准方法

--with-http_stub_status_module  获取nginx的状态信息

--with-http_addition_module  向相应内容中追加内容,比如想在站点底部追加一个js或者css(样式),在相应前或后追加文本内容

--with-http_sub_module  它是个过滤模块,修改网站响应内容中的字符串

--with-http_flv_module  为Flash视频(FLV)文件提供伪流服务器端支持

--with-http_ssl_module  启用ngx_http_ssl_module

--with-pcre 支持正则表达式

:如果pcre是通过源码编译安装的话,例如

# tar zxvf /usr/local/src/pcre-8.36.tar.gz -C /usr/local/src/

# cd  /usr/local/src/pcre-8.36

# ./configure && make && make install

则--with-pcre=/usr/local/src/pcre-8.36  #需要注意,这里指的是源码,用./configure --help |grep pcre查看帮助。

2.5编译安装

make && make install 

 2.6启动nginx

 /usr/local/nginx/sbin/nginx 

2.7查看端口号

 netstat -antup | grep 80

netstat 安装包是:net-tools

 正在监听80端口

3.测试版本号、名称是否隐藏

 curl -I 192.168.30.150      我这里测试的是自己本机的IP

 可以看到版本和服务器名称隐藏

3.1网站测试 

 

 测试成功,进入到nginx默认首页

4.配置文件nginx.conf

 在Nginx服务器的主配置文件nginx.conf中,包括全局配置、I/O事件配置、HTTP配置这三大块内容,配置语句的格式为”关键字  值;”(末尾以分号表示结束),以”#”开始的部分表示注释。

1)全局配置 

由各种配置语句组成,不使用特定的界定标记。全局配置部分包括运行用户、工作进程数、错误日志、PID存放位置等基本设置。

常用配置项:

user nobody;    #运行用户,Nginx的运行用户实际是编译时指定的nginx,若编译时未指定则默认为nobody

worker_processes 2;  #指定nginx启动的工作进程数量,建议按照cpu数目来指定,一般为它的倍数

worker_rlimit_nofile 102400;   #这个指令是指当一个nginx进程打开的最多文件数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n的值保持一致。(通过”ulimit –n 数值”可以修改打开的最多文件数目)

error_log  logs/error.log;  #全局错误日志文件的位置

pid  logs/nginx.pid;  #PID文件的位置

2)I/O事件配置:

3)HTTP配置

使用”http{}”界定标记,包括访问日志、HTTP端口、网页目录、默认字符集、连接保持、以及虚拟主机、PHP解析等一系列设置。其中大部分配置语句包含在子界定标记”server {}”内。

http {

   #设定媒体类型,include 只是一个在当前文件中包含另一个文件内容的指令。

   include      mime.types;

   default_type application/octet-stream;   //默认媒体类型足够。

   #设定日志格式

   log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                     '$status $body_bytes_sent "$http_referer" '

                     '"$http_user_agent" "$http_x_forwarded_for"';

   #设定access log

   access_log logs/access.log main;

   keepalive_timeout 65;  //连接保持超时

   #设定虚拟主机

   server {                //用来配置虚拟主机

      listen  80; //WEB服务的监听设置,可以采用”IP地址:端口”形式

      server_name www.lnmp.com;//网站名,称可以写多个名称,用空格分隔

       location / {    //表示如何匹配后面的路径的

            index index.html; //默认首页

            root html; //网页根目录位置,默认为Nginx安装目录下的html/子目录,root语句用来设置特定访问位置的网页文档路径,根据需要可改为/var/www/html等其他路径。

         }

      charset gb2312;  //网页的默认字符集

      #设定本虚拟主机的访问日志

      access_log logs/www.lnmp.com.access.log main;

      error_page 500 502 503 504  /50x.html; //内部错误的反馈页面

      location = /50x.html {

           root html;

      }

   } 

}


5.修改nginx运行账号 

编译安装时nginx时若不指定--user=, --group=选项,默认是nobody用户。

5.1查看nginx当前运行账号

 ps -aux | grep nginx

 master是主进程

worker是工作进程

可以理解为工作进程是提供服务的

可以看到的是我们在编译安装指定用户是www, 默认是nobody用户

 5.2创建nginx程序账号

useradd  -M -s /sbin/nologin www

 引之前创建过所以无需创建

5.3修改nginx运行账号

 vim /usr/local/nginx/conf/nginx.conf

 改:

#user  nobody;

为:

user www;

 5.4添加path环境变量

 ln -s /usr/local/nginx/sbin/* /usr/local/bin/

5.5重载nginx

 使用nginx -h 查看nginx选项信息

 nginx -t     #语法检测

 nginx -s reload       # 重载nginx

nginx -v   

显示版本号和服务器名称,隐藏则显示隐藏名称

 nginx -V(大写)

显示版本号、服务器名称、编译时使用的模块信息

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹黄堡!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值