nginx优化

简介:

nginx是俄罗斯编写的轻量级的http服务器。高性能的http和反向代理服务器,同时也是一个imap/pop3/smtp搭理服务器,nginx是由俄罗斯lgor sysoev为俄罗斯访问量第二的ramble.ru站点开发。

    nginx是轻量,开源,易用

    nginx以事件驱动的方式编写,有非常好的性能,同时也是一个非常高效的反向代理,负载均衡。不支持cgi方式运行,可以减少因此带来的一些程序上的漏洞,必须使用fastcgi方式来执行php程序。

编译安装前优化:

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

      安装zlib-develpcre-devel依赖包

    wKiom1j5cmehWQBNAAAd83ErqCk840.png-wh_50

        yun-y install gcc gcc-c++ make libtool zlib zlib-devel pcre-devel opensslopenssl-devel

wKiom1j5ceHACj4DAAAW7qbmatg169.png-wh_50

解压源码包

        tar zxf nginx-1.10.2.tar.gz

         cdnginx-1.20.2/

           修改软件名称和版本号

    wKiom1j5db6hjCi6AAD_d1EDS88152.jpg-wh_50

            vim src/core/nginx.h

            #defineNGINX_VERSION         版本号

            #defineNGINX_VER         软件名称

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

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

    wKiom1j5eIaCd9ErAADSng8TvL4618.jpg-wh_50

        修改http错误码的返回

            我们程序页面出现错误,nginx会代我们返回相应的错误代码,回显时,会带上nginx和版本号。

    vim /usr/src/nginx-1.10.2/src/http/ngx_http_special_response.c

    wKioL1j5egXRfcxWAAB9r45KBTQ661.jpg-wh_50

    二,安装nginx

    wKioL1j5fhKTVJc4AAA6gGNWnD8178.jpg-wh_50

    编译安装nginx

    wKioL1j5gD2AYM_JAAFFKPSpMlw464.jpg-wh_50

        如果pcre是通过编译安装的话,则--with-pcre=/usr/local/src/pcre-8.26

    创建软连接

    wKiom1j5gTrjTvGjAABoAns6oH0574.jpg-wh_50

    启动nginx和查看端口号

    wKiom1j5gbHjEKvXAABES2pg-fo603.jpg-wh_50

    测试编译安装前的优化

    wKiom1j5g7nAD8iYAAEXc4x7Jtk580.jpg-wh_50

    可以了解master是管理员,work进程才是为用户提供服务

    wKiom1j5hEXhGFesAABEc_I5KAI165.jpg-wh_50

三,nginx的优化   

    1.nginx运行工作进程个数,设置cpu的核心或者核心数的二倍

    wKiom1j5hRSSG7erAAAmWWTL5hc340.jpg-wh_50

     vim /usr/local/nginx1.10/conf/nginx.conf

        worker_processes 4

    /usr/local/nginx1.10/sbin/nginx -s reload

    wKioL1j5hmGAqi_wAACQzZMc2Ko478.jpg-wh_50

    nginx运行cpu亲和力

        woker_cpu_affinity 01 10

    woker_processer最多开启8个,8个以上不再提升性能了,而且稳定性变得更低。

    nginx最多打开文件数

        woker_rlimit_nofile 65535

        当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数与nginx进程数相除。最好与ulimit -n的值保持一致。

    wKioL1j5iPrihT0jAAAo7Woi8Zw056.jpg-wh_50

        文件资源限制配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户设置

    wKiom1j5i-fj75-QAAB1uHlVH1k263.jpg-wh_50

    2.nginx事件处理模型

        events {

            use epoll;

            worker_connection 65536;

            multi_accept on;

        nginx采用epoll事件模型,处理效率高

        work_connections是单个worker进程允许客户端最大连接数,这个数值一般根据服务器性能和内存限定,时间最大值就是worker进程数乘以work_connectioins

        multi_accept告诉nginx收到一个新连接通知后接受尽可能多的连接

        wKioL1j5j2nAvBTMAACOIxhgOp8351.jpg-wh_50

    3,开启高兴传输模式

       http {

            include mime,types;

            default_type application/octest-stream;

            ...

            sendfile on;

            tcp_nopush on;

            ... 

        include mime.types:媒体类型,incude只是在当前文件中包含另一个文件内容的指令

        default_type application/octer-stream:默认媒体类型足够

        tcp_nopush on:必须在sendfile开启模式才有效,防止网络阻塞,积极减少网络报文段的数量

        wKiom1j5kdPii_erAAFPH818DA0759.jpg-wh_50

    5,连接超时时间

        保护服务器资源,cpu,内存,控制连接数,建立连接也是需要消耗资源的

        keepalived_timeout 60;

        tcp_nodelay on;

        client_header_buffer_size 4k;

        open_file_cache max=102400 inactive=20s;

        open_file_cache_valid 30s;

        open_file_cache_min_uses 1;

        client_body_timeout 15;

        reset_timedout_connection on;

        send_timeout 15;

        server_tokens off;

        client_max_body_size 10m;

        wKioL1j5maSwrIEgAAIlVpOAwhk965.jpg-wh_50

本文转自   宏强   51CTO博客,原文链接:http://blog.51cto.com/tanhong/1918131

相关文章
|
应用服务中间件 nginx
nginx优化:URI过长或request header过大导致400或414报错
当出现URI过长或请求头过大导致400或414报错时,可以通过以下方式对Nginx进行优化: 1. 调整client_max_body_size参数:该参数用于限制请求体的大小。默认情况下,Nginx的client_max_body_size参数设置为1M。如果请求体超过这个大小,Nginx会返回400错误。您可以根据实际需求适当增加这个值,例如设置为10M或更大。 ``` http { client_max_body_size 10M; } ``` 2. 调整large_client_header_buffers参数:该参数用于调整请求头缓冲区的大
4438 0
|
1月前
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
63 3
|
3月前
|
缓存 前端开发 JavaScript
|
3月前
|
缓存 监控 负载均衡
nginx相关配置及高并发优化
Nginx的高并发优化是一个综合性的过程,需要根据具体的业务场景和硬件资源量身定制。以上配置只是基础,实际应用中还需根据服务器监控数据进行持续调整和优化。例如,利用工具如ab(Apache Benchmarks)进行压力测试,监控CPU、内存、网络和磁盘I/O等资源使用情况,确保配置的有效性和服务的稳定性。
165 0
|
5月前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
78 2
|
5月前
|
缓存 前端开发 Java
"揭秘!SpringBoot携手Nginx,性能飙升秘籍大公开:轻松掌握配置优化,让你的应用快如闪电!"
【8月更文挑战第11天】随着微服务架构的发展,SpringBoot成为构建RESTful API的首选,Nginx则作为高性能的反向代理服务器提升应用性能。本文将探讨两者如何协同工作,包括Nginx的负载均衡策略、静态资源缓存及数据压缩配置;同时讨论SpringBoot的线程池优化、缓存策略及性能监控。通过这些方法,帮助开发者显著提高系统的整体性能和可用性。
210 1
|
6月前
|
缓存 负载均衡 应用服务中间件
Nginx反向代理优化
教你如何做好Nginx反向代理优化
118 5
|
7月前
|
监控 前端开发 应用服务中间件
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽(2)
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽
98 1
|
7月前
|
负载均衡 前端开发 应用服务中间件
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽(1)
前端开发者必备:Nginx入门实战宝典,从部署到优化一网打尽
229 1
|
8月前
|
缓存 负载均衡 安全
深入探索Nginx高性能Web服务器配置与优化
【5月更文挑战第7天】本文深入探讨了Nginx的配置与优化,重点介绍了基础配置参数如`worker_processes`、`worker_connections`和`keepalive_timeout`,以及优化策略,包括使用epoll事件驱动模型、开启gzip压缩、启用缓存、负载均衡和安全配置。此外,还提到了性能调优工具,如ab、nginx-stats和nmon,以助于提升Nginx的性能和稳定性。