Nginx服务优化之隐藏版本号、修改用户与组、配置页面缓存与时间、日志分割以及设置连接超时

Nginx服务优化之隐藏版本号、修改用户与组、配置页面缓存与时间、日志分割以及设置连接超时

前言

? 在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行相应参数配置,以达到最优的用户体验。

? 默认的nginx安装参数只能提供最基本的服务,还需要调整如网页缓存时间、连接超时、网页压缩等相应参数,才能发挥出服务器的最大作用。

一、隐藏版本号

? 我们为什么要隐藏版本号?

? 我们一定要有一个意识:对于软件或者说服务,其安全性必然不可能是无懈可击的,总会或多或少地存在各种bug或者漏洞,那么这就会成为或者存有恶意的人所的一个方向,所有隐藏版本号可以在一定程度上增强该软件或者服务的安全性。

? 那么对于nginx的版本号如何进行隐藏设置呢?下面我们对此进行配置说明。

? 下面所有的操作都是在进行了手工编译完好的nginx的基础上开始进行的操作。

1.使用curl命令查看nginx的版本号

[[email protected] ~]# which curl
/usr/bin/curl
[[email protected] ~]# curl -I http://192.168.68.145/
HTTP/1.1 200 OK
Server: nginx/1.12.2
Date: Wed, 25 Dec 2019 10:31:46 GMT
Content-Type: text/html
Content-Length: 631
Last-Modified: Wed, 25 Dec 2019 10:04:25 GMT
Connection: keep-alive
ETag: "5e033429-277"
Accept-Ranges: bytes

2.配置隐藏版本号,然后进行启动,再检测 (第一种方法)

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
[[email protected] ~]# sed -n ‘16,20p‘ /usr/local/nginx/conf/nginx.conf

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens off;

[[email protected] ~]# service nginx stop
[[email protected] ~]# service nginx start
[[email protected] ~]# curl -I http://192.168.68.145/
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 25 Dec 2019 11:45:58 GMT
Content-Type: text/html
Content-Length: 631
Last-Modified: Wed, 25 Dec 2019 10:04:25 GMT
Connection: keep-alive
ETag: "5e033429-277"
Accept-Ranges: bytes

3.利用源码文件伪造版本号

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
[[email protected] ~]# sed -n ‘16,20p‘ /usr/local/nginx/conf/nginx.conf

http {
    include       mime.types;
    default_type  application/octet-stream;
    server_tokens on;
[[email protected] ~]# cd /opt/nginx-1.12.2/src/
[[email protected] src]# ls
core  event  http  mail  misc  os  stream
[[email protected] src]# cd core/
[[email protected] core]# ls
nginx.c           ngx_cycle.h            ngx_output_chain.c    ngx_rwlock.c
nginx.h           ngx_file.c             ngx_palloc.c          ngx_rwlock.h
ngx_array.c       ngx_file.h             ngx_palloc.h          ngx_sha1.c
ngx_array.h       ngx_hash.c             ngx_parse.c           ngx_sha1.h
ngx_buf.c         ngx_hash.h             ngx_parse.h           ngx_shmtx.c
ngx_buf.h         ngx_inet.c             ngx_parse_time.c      ngx_shmtx.h
ngx_conf_file.c   ngx_inet.h             ngx_parse_time.h      ngx_slab.c
ngx_conf_file.h   ngx_list.c             ngx_proxy_protocol.c  ngx_slab.h
ngx_config.h      ngx_list.h             ngx_proxy_protocol.h  ngx_spinlock.c
ngx_connection.c  ngx_log.c              ngx_queue.c           ngx_string.c
ngx_connection.h  ngx_log.h              ngx_queue.h           ngx_string.h
ngx_core.h        ngx_md5.c              ngx_radix_tree.c      ngx_syslog.c
ngx_cpuinfo.c     ngx_md5.h              ngx_radix_tree.h      ngx_syslog.h
ngx_crc32.c       ngx_module.c           ngx_rbtree.c          ngx_thread_pool.c
ngx_crc32.h       ngx_module.h           ngx_rbtree.h          ngx_thread_pool.h
ngx_crc.h         ngx_murmurhash.c       ngx_regex.c           ngx_times.c
ngx_crypt.c       ngx_murmurhash.h       ngx_regex.h           ngx_times.h
ngx_crypt.h       ngx_open_file_cache.c  ngx_resolver.c
ngx_cycle.c       ngx_open_file_cache.h  ngx_resolver.h
[[email protected] core]# vim nginx.h
[[email protected] core]# sed -i ‘15p‘ nginx.h
[[email protected] core]# vim nginx.h
[[email protected] core]# sed -n ‘15p‘ nginx.h

[[email protected] core]# vim nginx.h
[[email protected] core]# sed -n ‘13p‘ nginx.h
#define NGINX_VERSION      "1.12.2"

注意!可以将上面的1.12.2改为其他版本,但是需要重新手工编译安装,所以该方法适合最初的时候进行设置

二、修改用户和组

nginx运行时进程需要有用户和组的支持,用以实现对网站文件读取时进行访问控制。主进程由root创建,子进程由指定的用户与组创建。nginx默认使用nobody用户账号与组账号,一般也需要修改。

? 因此,一般我们在手工编译安装nginx的时候是设置了用户和组,另一种方法就是修改配置文件来指定用户与组。

[[email protected] src]# sed -n ‘2p‘ /usr/local/nginx/conf/nginx.conf
#user  nobody;

将改行取消注释,改为user nginx nginx;

重启服务即可。

三、配置页面缓存时间

目的:为了减缓服务器的负担,优化连接请求。

[[email protected] html]# vim /usr/local/nginx/conf/nginx.conf
[[email protected] html]# sed -n ‘57,59p‘  /usr/local/nginx/conf/nginx.conf
        location ~*\.(jpg|gif|swf)$ {
            root html;
            expires 1d;
[[email protected] html]# service nginx stop
[[email protected] html]# service nginx start
[[email protected] html]# ls
0.jpg  50x.html  error.png  index.html
[[email protected] html]# sed -n ‘14,16p‘ index.html
<h1>Welcome to nginx!</h1>
<img src="0.jpg"/>
<p>If you see this page, the nginx web server is successfully installed and

测试验证结果如下:

四、日志分割

写一个脚本之后可以使用crontab来进行周期任务执行该脚本

[[email protected] ~]# vim /opt/fenge.sh
[[email protected] ~]# cat /opt/fenge.sh
#!/bin/bash
d=$(date -d "-1 day" "+%Y%m%d")  #显示一天前的时间
logs_path="/var/log/nginx"
pid_path="/usr/local/nginx/logs/nginx.pid"
[ -d $logs_path ] || mkdir -p $logs_path
mv /usr/local/nginx/logs/access.log ${logs_path}/test.com-access.log-$d
kill -USR1 $(cat $pid_path)
find $logs_path -mtime +30 | xargs rm -rf
[[email protected] ~]# chmod +x /opt/fenge.sh
[[email protected] ~]# ls /opt/fenge.sh
/opt/fenge.sh
[[email protected] ~]# cd /opt/
[[email protected] opt]# ./fenge.sh
[[email protected] opt]# cd /var/log/nginx/
[[email protected] nginx]# ls
test.com-access.log-20191224

五、设置连接超时

什么是连接超时?

当服务器建立的连接没有接收处理请求时,可以在指定的时间内让它超时自动退出

连接超时的作用

(1) 将无用的连接设置为尽快超时,可以保护服务器的系统资源(CPU、内存、磁盘)
(2) 当连接很多时,及时断掉那些建立好的但又长时间不做事的连接,以减少其占用的服务器资源
(3) 如果**,会不断地和服务器建立连接,因此设置连接超时以防止大量消耗服务器的资源
(4) 如果用户请求了动态服务,则 Nginx 就会建立连接,请求 FastCGI 服务以及后端 MySQL 服务,设置连接超时,使得在用户容忍的时间内返回数据

设置连接超时

(1) keepalive_timeout :该参数用于设置客户端连接保持会话的超时时间,超过这个时间服务器会关闭该连接
(2) client_header_timeout :该参数用于设置读取客户端请求头数据的超时时间,如果超时客户端还没有发送完整的 header 数据,服务器将返回 "Request time out (408)" 错误
(3) client_body_timeout :该参数用于设置读取客户端请求主体数据的超时时间,如果超时客户端还没有发送完整的主体数据,服务器将返回 "Request time out (408)" 错误
(4) send_timeout :用于指定响应客户端的超时时间,如果超过这个时间,客户端没有任何活动,Nginx 将会关闭连接
(5) tcp_nodelay :默认情况下当数据发送时,内核并不会马上发送,可能会等待更多的字节组成一个数据包,这样可以提高 I/O 性能,但是,在每次只发送很少字节的业务场景中,使用 tcp_nodelay 功能,等待时间会比较长

基本配置实例:可以使用抓包工具测试

[[email protected] conf]# vim nginx.conf
[[email protected] conf]# sed -n ‘32,34p‘ nginx.conf
    keepalive_timeout  65 180;
    client_header_timeout 80;
    client_body_timeout 80;
[[email protected] conf]# service nginx stop
[[email protected] conf]# service nginx start

总结

本文主要是对nginx相关配置参数进行优化,从安全、用户、缓存、日志以及连接这五个方面进行优化。

原文地址:https://blog.51cto.com/14557673/2461881

时间: 2024-12-17 00:13:47

Nginx服务优化之隐藏版本号、修改用户与组、配置页面缓存与时间、日志分割以及设置连接超时的相关文章

nginx优化,隐藏版本号,修改用户和组,网页缓存时间,更改进程数,以及防盗链

设置nginx优化隐藏版本号,修改用户和组,网页缓存时间,更改进程数, 以及防盗链的代码内容 ========================隐藏版本号,修改用户和组 方法一: cd /opt/nginx-1.12.0/src/core vim nginx.h #define NGINX_VERSION "1.12.0" //在编译安装前去篡改版本号达到隐藏的效果 方法二: vim /usr/local/nginx/conf/nginx.conf server_tokens off;

Nginx服务优化------(隐藏版本+缓存+修改用户与组+日志分割+进程超时)

[TOC] 文章目录 一.配置Nginx隐藏版本号 1.1.修改配置文件法 1.2.修改源码法 二.修改Nginx用户与组 2.1.修改配置文件指定用户与组 三.配置Nginx网页缓存时间 四.配置日志分割 五.实现连接超时 nginx的安装已经提前配置好了,需要的可以参考我的博客,链接为:Nginx 的配置 一.配置Nginx隐藏版本号 在生产环境中,需要隐藏Nginx的版本号,以避免安全漏洞的泄漏 查看方法 使用fiddler工具在Windows客户端查看Nginx版本号 在CentOS系统

Nginx服务优化及优化深入

在企业信息化应用环境中,服务器的安全性和响应速度需要根据实际情况进行参数配置,以达到最优的用户体验.默认的Nginx安装参数只能提供最基本的服务,还需要调整如网页缓存时间.连接超时.网页压缩等相应参数,才能发挥出服务器的最大作用. Ngnix服务的安装详细介绍请参考 部署Nginx网站服务实现访问状态统计以及访问控制功能 Nginx服务优化 可以从隐藏版本号.更改用户与组.配置网页缓存时间.日志切割.设置连接超时这几个方面进行优化. 1.隐藏版本号 在生产环境中需要隐藏Nginx的版本号,以避免

nginx的配置和优化(隐藏版本号、gzip、expires、防盗链......等)

Nginx配置和优化 1.隐藏版本号 默认情况下,使用curl命令会把nginx的版本信息等获取到,如: [[email protected]_machine ~]# curl -I -H"www.beyond.com" "http://172.16.254.5/index.php"  HTTP/1.1 200 OK Server:nginx/1.6.3 Date: Wed, 24 Jun 2015 02:50:59 GMT Content-Type: text/h

企业级Web Nginx 服务优化(1)

企业级Web Nginx 服务优化 总结配置文件: nginx.conf httpd.conf httpd-vhosts httpd-mpm.conf my.cnf php.ini php-fpm.conf 1.1nginx.conf 配置文件基本参数优化 1.1.1 隐藏nginx header 内版本号信息 一些特定的系统及服务漏洞一般都和热定的软件及版本号有关,我们应尽量隐藏服务器的敏感信息(软件名称及版本等信息),这样黑客无法猜到有漏洞的服务是否是对应服务的版本,从而确保web服务器最大

Nginx服务优化

1.1Nginx.conf配置文件基本参数优化 1.1.1  隐藏nginx header内版本号信息 一些特定的系统及服务漏洞一般都和特定的软件及版本号有关,我们应尽量隐藏服务器的敏感信息(软件名称及版本等信息)这样黑客无法猜到有漏洞的服务是否是对应服务的版本,从而确保web服务器最大的安全. 彻底修改nginx错误返回页面,在编译安装之前修改nginx.h文件 sed -n '13,17p' src/core/nginx.h #define NGINX_VERSION      "1.6.3

nginx服务优化大全

第18章 nginx服务优化 18.1 复习以前的nginx知识 18.1.1 复习nginx编译安装的3部曲 ./configure????????配置(开启/关闭功能),指定安装目录 make????????????软件编译,将源代码编译成二进制文件 make install????????将一些目录进行复制,修改,文件进行修改,查看的操作 18.1.2 编译安装常用的nginx命令 nginx -t????????????????????????????语法检查 nginx -s relo

Nginx服务优化(七)网页压缩与防盗链

配置Nginx实现网页压缩功能 Nginx的ngx_http_gzip_module压缩模块提供对文件内容压缩的功能,允许Nginx服务器将输出内容在发送客户端之前进行压缩,以节约网站带宽,提升用户的访问体验,默认已经安装.可在配置文件中加入相应的压缩功能参数对压缩性能进行优化. 压缩功能参数讲解 gzip on:开启gzip压缩输出 gzip_min_length 1k:用于设置允许压缩的页面最小字节数 gzip_buffers 4 16k:表示申请4个单位为16k的内存作为压缩结果流缓存,默

企业级Web Nginx 服务优化

企业级Web Nginx 服务优化 http://blog.51cto.com/search/result?q=%E4%BC%81%E4%B8%9A%E7%BA%A7Web+Nginx+%E6%9C%8D%E5%8A%A1%E4%BC%98%E5%8C%96%285%29 企业级nginx服务优化合集 企业级nginx服务优化(一) 企业级nginx服务优化(二 ) 企业级Web Nginx 服务优化(1) 企业级Web Nginx 服务优化(2) 企业级Web Nginx 服务优化(3) 企业