一.更改版本信息
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