Nginx优化与防盗链

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

由于Nginx本身的一些优点,轻量,开源,易用,越来越多的公司使用nginx作为自己公司的web应用服务器,本文详细介绍nginx源码安装的同时并对nginx进行优化配置。

一、Nginx的优化

1、编译安装前优化

编译前的优化主要是用来修改程序名等等,目的更改源码隐藏软件名称和版本号

安装zlib-devel、pcre-devel等依赖包

wKiom1jLdojSXteWAAARYqieA1A058.png

下载nginx的源码包:

解压源码包:

生产环境下如果让黑客知道你用的是什么web软件搭建的网站很容易遭到攻击和漏洞扫描,隐藏软件名称和版本号就成为了势在必行的一件事。

//此行修改的是你想要的版本

#define NGINX_VERSION      "1.10.2"     //第13行

//此行修改的是你想修改的软件名称

#define NGINX_VER          "nginx/" NGINX_VERSION  //第14行

修改上面的信息,即可更改nginx显示版本。例如:

wKioL1jLeEWyaE7xAAANCJRVv2c485.png

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

通用http头,通用头包含请求和响应消息都支持的头,通用头包含Cache-Control、 Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头,一般将会作为实体头处理。那么也就是说有部分设备,或者是软件,能获取到connection,部分不能,要隐藏就要彻底!

修改前:

static char ngx_http_server_string[] = "Server: nginx" CRLF;  //第49行

修改后:

wKioL1jLeQjhiDVSAAAXnzAqeWA141.png

定义了http错误码的返回

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

[root@txn nginx-1.10.2]# vi src/http/ngx_http_special_response.c

修改前

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

修改后

2、安装ngnix

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

编译nginx 指定用户和组

wKioL1jLekWTyA3nAAAqeDmCss0704.png

相关选项说明

--with-http_dav_module  #增加PUT,DELETE,MKCOL:创建集合,COPY和MOVE方法

--with-http_stub_status_module  #获取Nginx的状态统计信息

--with-http_addition_module   #作为一个输出过滤器,支持不完全缓冲,分部分相应请求

--with-http_sub_module     #允许一些其他文本替换Nginx相应中的一些文本

--with-http_flv_module     #提供支持flv视频文件支持

--with-http_mp4_module  #提供支持mp4视频文件支持,提供伪流媒体服务端支持

--with-http_ssl_module         #启用ngx_http_ssl_module

安装

设置nginx软连接方便以后使用

启动nginx

wKioL1jLekXwcNhyAAAVxaY7Lxs711.png

测试是否隐藏了版本和软件名

wKiom1jLekaSOcrQAAAuFccVFOk003.png

wKioL1jLekaBbOU2AAAdb_MPyL4962.png

3、nginx配置项优化

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/bc1f5dc3a9146308b8ccc1e9c3bd330c.html