资讯详情

NGINX优化

nginx简介

Nginx是俄罗斯人Igor Sysoev以事件驱动(epoll)轻量级,高性能 HTTP 也是反向代理服务器 IMAP/POP3/SMTP代理服务器。但是nginx并不支持cgi原因是程序上的一些漏洞可以减少。因此必须使用fastcgi方式来执行php程序。

nginx优化

编译安装前的优化主要用于修改程序名等,目的是更改源代码隐藏软件名和版本号 安装zlib-devel,pcre-devel等依赖包 在这里插入图片描述 下载nginx的源码包:http://nginx.org/download 解压源包: 隐藏软件名称及版本号: 定义了http返回错码: 有时我们的页面程序会出错,nginx会代我们返回相应的错误代码,回显的时候会带上ngin以及版本号,我们可以通过更改配置文件来隐藏这些信息 说明相关选项 –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 测试是否隐藏版本和软件名称 我们可以在这里看到work我们创建了这个过程nginx但是master进程还是root,其中master监控过程,又称主过程,work是工作过程,部分还有cache关系如下图所示 可以直接理解为master是管理员,work为用户提供服务的过程是 . 进入nginx配置文件 1.nginx运行工作流程数 2.nginx事件处理模型 3.开启高效传输模式 4.连接超时间 keepalived_timeout:客户端连接保持会话超时,服务器会断开链接 . tcp_nodelay:也是为了防止网络堵塞,但要包容keepalived参数才有效 . client_header_buffer_size 4k:可根据您的系统分页大小设置客户端请求头部缓冲区大小。一般来说,请求头的大小不会超过 1k,但由于一般系统分页大于1k,因此这里设置为分页大小。命令可用于分页大小 getconf PAGESIZE取得。open_file_cache . max=102400 inactive=20s:默认情况下,这将为打开文件指定缓存。max 建议将指定的缓存数量与打开文件数量一致,inactive 文件被要求删除缓存多久? . open_file_cache_valid 30s:这是指检查缓存的有效信息需要多长时间? . open_file_cache_min_uses 1:open_file_cache 指令中的 inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 如果不在时间内使用一次,它将被移除。 . client_header_timeout:设置请求头的超时间。如果超过此,我们也可以将此设置降低 时间没有发送任何数据,nginx 将返回 request time out的错误 . client_body_timeout:设置请求体的超时间。这个设置也可以低一些,超过这个时间 与上述错误提示相同相同的任何数据 . reset_timeout_connection:告诉 nginx 关闭不响应的客户端连接。这将释放客户端 内存空间 . send_timeout 响应客户端超时时间,超时时间仅限于两个活动之间的时间 此时,客户端没有活动,nginx 关闭连接 . server_tokens:并不会让 nginx 执行速度更快,但可以关闭错误页面nginx 版本 数字有利于安全 . client_max_body_size:限制上传文件的大小 . . 5.fastcgi调优 fastcgi_connect_timeout 600:指定连接到后端 FastCGI 的超时时间 . fastcgi_send_timeout 600:向 FastCGI传送请求的超时时间 . fastcgi_read_timeout 600:指定接收 FastCGI应答的超时时间 . fastcgi_buffer_size 64k:指定读取 FastCGI应答第一部分需要用多大的缓冲区,默认的缓冲区大小为 fastcgi_buffers指令中的每块大小,可以将这个值设置更小 . fastcgi_buffers 4 64k:指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求,如果一个 php 脚本所产生的页面大小为256KB,那么会分配 4 个 64KB 的缓冲区来缓存,如果页面大小大于 256KB,那么大于 256KB 的部分会缓存到 fastcgi_temp_path指定的路径中,但是这并不是个好方法,因为内存中的数据处理速度要快于磁盘。一般这个值应该为站点中php 脚本所产生的页面大小的中间值,如果站点大部分脚本所产生的页面大小为256KB,那么可 以把这个值设置为“8 32K”、“4 64k”等 . fastcgi_busy_buffers_size 128k:建议设置为 fastcgi_buffers的两倍,繁忙时候的 buffer . fastcgi_temp_file_write_size 128k:在写入 fastcgi_temp_path时将用多大的数据块,默认 值是 fastcgi_buffers的两倍,该数值设置小时若负载上来时可能报502 Bad Gateway . fastcgi_temp_path:缓存临时目录 . fastcgi_intercept_errors on:这个指令指定是否传递4xx 和 5xx 错误信息到客户端,或者允许 nginx 使用 error_page 处理错误信息 . fastcgi_cache_path /usr/local/nginx1.10/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128m inactive=1d max_size=10g:fastcgi_cache缓存目录,可以设置目录层级,比如 1:2 会生成16*256 个子目录,cache_fastcgi是这个缓存空间的名字,cache 是用多少内存(这样热门的内容 nginx 直接放内存,提高访问速度),inactive 表示默认失效时间,如果缓存数据在失效时间内没有被访问,将被删除,max_size 表示最多用多少硬盘空间 . . 6.gzip调优 gzip on:开启压缩功能 . gzip_min_length 1k:设置允许压缩的页面最小字节数,页面字节数从header 头的Content-Length 中获取,默认值是0,不管页面多大都进行压缩,建议设置成大于1K,如果小于 1K 可能会越压越大 . gzip_buffers 4 32k:压缩缓冲区大小,表示申请4个单位为32K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip 压缩结果 . gzip_http_version 1.1:压缩版本,用于设置识别HTTP 协议版本 . gzip_comp_level 6:压缩比例,用来指定GZIP 压缩比,1 压缩比最小,处理速度最快,9 压 缩比最大,传输速度快,但是处理慢,也比较消耗CPU 资源 . gzip_types text/css text/xml application/javascript:用来指定压缩的类型,‘text/html’类型总是会被压缩。默认值: gzip_types text/html (默认不对 js/css 文件进行压缩) . gzip_vary on:vary header支持,改选项可以让前端的缓存服务器缓存经过GZIP 压缩的页 面,例如用 Squid 缓存经过 nginx 压缩的数据 . . 7.expires缓存调优 8.防盗链 9.内核参数优化 fs.file-max = 999999:这个参数表示进程(比如一个worker 进程)可以同时打开的最大句柄 数,这个参数直线限制最大并发连接数,需根据实际情况配置 . net.ipv4.tcp_max_tw_buckets = 6000:这个参数表示操作系统允许 TIME_WAIT 套接字数量 的最大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息 . net.ipv4.ip_local_port_range = 1024 65000:允许系统打开的端口范围 . net.ipv4.tcp_tw_recycle = 1:启用 timewait 快速回收 . net.ipv4.tcp_tw_reuse = 1:开启重用。允许将 TIME-WAIT sockets重新用于新的 TCP 连接。这对于服务器来说很有意义,因为服务器上总会有大量TIME-WAIT 状态的连接 . net.ipv4.tcp_keepalive_time = 30:这个参数表示当 keepalive启用时,TCP 发送 keepalive消息的频度。默认是 2 小时,若将其设置的小一些,可以更快地清理无效的连接 . net.ipv4.tcp_syncookies = 1:开启 SYN Cookies,当出现 SYN 等待队列溢出时,启用cookies 来处理 . net.core.somaxconn = 40960:web 应用中 listen 函数的 backlog 默认会给我们内核参数的 net.core.somaxconn 限制到 128,而 nginx 定义的 NGX_LISTEN_BACKLOG 默认为 511,所以有必要调整这个值 . net.core.netdev_max_backlog = 262144:每个网络接口接收数据包的速率比内核处理这些包 的速率快时,允许送到队列的数据包的最大数目 . net.ipv4.tcp_max_syn_backlog = 262144:这个参数标示 TCP 三次握手建立阶段接受SYN 请求队列的最大长度,默认为 1024,将其设置得大一些可以使出现 Nginx 繁忙来不及 accept 新连接的情况时,Linux 不至于丢失客户端发起的连接请求。 . net.ipv4.tcp_rmem = 10240 87380 12582912:这个参数定义了 TCP 接受缓存(用于 TCP 接受滑动窗口)的最小值、默认值、最大值。 . net.ipv4.tcp_wmem = 10240 87380 12582912:这个参数定义了 TCP 发送缓存(用于 TCP 发送滑动窗口)的最小值、默认值、最大值 . net.core.rmem_default = 6291456:这个参数表示内核套接字接受缓存区默认的大小 . net.core.wmem_default = 6291456:这个参数表示内核套接字发送缓存区默认的大小 . net.core.rmem_max = 12582912:这个参数表示内核套接字接受缓存区的最大大小 . net.core.wmem_max = 12582912:这个参数表示内核套接字发送缓存区的最大大小 . net.ipv4.tcp_syncookies = 1:该参数与性能无关,用于解决TCP 的 SYN 攻击 . 下面是完整的内核优化过程↓ fs.file-max = 999999 net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 10240 87380 12582912 net.ipv4.tcp_wmem = 10240 87380 12582912 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 262144 net.core.somaxconn = 40960 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.ip_local_port_range = 1024 65000 ps:执行sysctl -p 使内核修改生效

标签: sub连接器78p

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台