nginx的安装与如何隐藏nginx的版本号

1、nginx概念

Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。

  nginx是一个轻量级、高性能的web服务器软件和反向代理服务器。nginx以事件驱动(epoll)的方式编写的,所以有非常好的性能,同时也是一个非常高小的反向代理、负载均衡。但是nginx不支持cgi的方式运行,因为可以减少因此带来的程序上的漏洞。所以必须用fastCGI方式来执行的PHP程序。

2、nginx的官网

官网:  http://nginx.org

需要什么版本可以选择下载

3、隐藏nginx版本号

3.1、查看百度的wed服务器

curl -I http://www.baidu.com

 3.2、隐藏nginx服务器版本号

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

 3.2.1解压nginx软件包

用tar命令将nainx解压到/usr/local/src下

tar zxf nginx-1.10.3.tar.gz -C /usr/local/src/

 3.2.2、修改源码隐藏软件名称和版本号

1、进入nginx包中

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

 2、修改nginx.h文件

vim src/core/nginx.h

3、修改ngx_http_header_filter_module.c 文件

vim src/http/ngx_http_header_filter_module.c

4、修改ngx_http_special_response.c文件

这个文件定义了http错误码的返回,有时候我们也页面程序出现错误,nainx会带我们返回相应的错误代码,回显的时候带上nginx和版本号,我们要把们隐藏起来

vim src/http/ngx_http_special_response.c

4、安装nginx

4.1、安装nginx依赖包

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

    出现complete(完毕)安装完成

4.2、预编译

1、创建nginx运行账户www并将他加入到www组中,不允许www用户直接登录系统

groupadd www   #添加www组

useradd -g www www -s /sbin/nologin   #创建www用户然后将他入www组并且不允许他登录系统

 2、增加编译时所需的模块

./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启动webDav协议的支持。WebDAV是一种基于HTTP1.1协议的通信协议
--with-http_stub_status_module获取nginx的状态统计信息
--with-http_addition_module向响应内容中追加内容,比如想在站点底部追加一个js或者css,可以使用这个模块来实现。
--with-http_sub_module这个模块是一个过滤器,他修改网站中内容中的字符串。
--with-http_flv_module这个模块为Flash视频文件提供伪流服务器支持
--with-http_mp4_module这个模块提供了对MP4视频的播放支持,相关扩展名.mp4.m4.ma.
--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查看帮助。

3、编译安装nginx

make && make install

4、启动nginx

/usr/local/nginx/sbin/nginx

5、用netstat命令查看是否启动nginx

netstat -anptl | grep 80 

显示:80 端口正在间监听中     注:netstat安包是net-tools 

 5、测试是否隐藏nginx版本号

curl -I 192.168.1.16          #自己的ip地址

5.1网站测试

6、nginx配置文件 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事件配置:

使用”events {}”界定标记,用来指定Nginx进程的I/O响应模型,每个进程的连接数等设置

events {

   use epoll;   //使用epoll模型,对于2.6以上的内核,建议使用epoll模型以提高性能

   worker_connections 4096;  //每个进程允许的最多连接数(默认为1024),每个进程的连接数应根据实际需要来定,一般在10000以下,理论上每台nginx服务器的最大连接数为worker_processes*worker_connections,具体还要看服务器的硬件、带宽等。

}

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;

      }

   }

}

将用户修改成刚才所创建的www用户 

6.1查看nginx当前运行账号

ps -aux | grep nginx

6.2增加path变量

创建一个软连接

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

6.3重载nginx

用 -h选项查看nginx的选项帮助

nginx -h

nginx -t           #语法检测

 显示syntax is ok 语法是可以的 

 nginx -s reload       # 重载nginx

在这里我们还可以看到在查看的时候,worker进程是www用户了,但是master进程还是root

其中,master是监控进程,也叫主进程,worker是工作进程.

master监控进程使用root,也可以是降级使用普通用户,如果都是用普用户,那么编译安装的时候,是用普通用户执行,sudo方式操作,可以直接理解为master是管理员,worker进程才是为用户提供服务的!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值