企业级Nginx服务优化和安全加固

一.更改版本信息

1,在编译之前对源码文件红的/src/core/nginx.h

src/core/nginx.h

#define nginx_version      1008001

#define NGINX_VERSION      "1.8.1"  #修改想要显示的版本如:2.2.23

#define NGINX_VER          "nginx/" NGINX_VERSION        #将nginx修改成想要显示的软件名称

#define NGINX_VAR          "NGINX" #将nginx修改成想要显示的软件名称(Evan Web Server)

#define NGX_OLDPID_EXT     ".oldbin"

src/http/ngx_http_header_filter_module.c

static char ngx_http_server_string[] = "Server: nginx" CRLF;  #将nginx修改为想要的版本

src/http/ngx_http_special_response.c

"<hr><center>nginx</center>" CRLF  #将nginx修改为想要的版本信息

2,隐藏版本号

server_tokens默认值是on,表示不显示版本号。改成off之后,可以所有地方隐藏版本号。

需要在http{}作用域中添加。

server_tokens off;

然后重启。

# ./nginx  -s reload

二.主配置文件优化

1,新建nginx用户,并使用nginx用户启动服务

# useradd  -s /sbin/nologin  nginx 新建nginx并限制nginx用户登录系统

# sed  -i s/nobody/nginx/g "nginx.conf"  把配置文件中nobody用户改成nginx

2,事件处理模型优化

在events {}中,设置epoll模型和每个进程最大连接数。

use epoll;

worker_connections  1024;

worker_rlimit_nofile    65535; 每个进程打开的最大文件数

*/进程的最大连接数受系统进程最大打开文件数限制,执行ulimit -HSn 65535,或者配置相应文件的   worker_connections的设置后生效。*/

3,开启高效的文件传输模式

sendfile        on;

tcp_nopush     on;

client_max_body_size   10m; 客户端最大上传限制

4,gzip压缩功能

gzip  on; #开启压缩

gzip_min_length   1k; #大于1k压缩

gzip_buffers    4  32k; #压缩缓存区大小

gzip_http_version  1.1; #压缩版本

gzip_comp_level  9; #压缩比例1-9

gzip_vary on; # vary header支持

4,expire缓存功能,在客户端本地缓存多久

location  ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

{

access_log  off; #不记录不需要的访问日志

expires    3d;}

location  ~ .*\.(js|css)?$

{

expires 30d;}

5,所有web目录均采用最小化权限原则

Site目录的用户和组都为nginx

目录权限为755

文件权限为664

以上内容pdf版本下载:企业级Nginx服务优化和安全加固.pdf

nginx


发表评论

登录 后发表评论.