1、编译安装nginx前修改: 在安装包目录下

       vim src/core/nginx.h    //#号不代表注释

          #define nginx_version      1009009        //软件版本号

          #define NGINX_VERSION      "1.9.9"        //版本号

          #define NGINX_VER          "nginx/" NGINX_VERSION      //软件程序名字

        vim src/http/ngx_http_header_filter_module.c    //隐藏版本信息,请求头

           //搜索NGINX_VER

          static char ngx_http_server_string[] = "Server: nginx" CRLF;改成

          static char ngx_http_server_string[] = "hello"

        vim src/http/ngx_http_special_response.c       //隐藏版本信息,相应头

          //搜索NGINX_VER

          "<hr><center>" NGINX_VER "</center>" CRLF  改成

          "<hr><center>hello </center>" CRLF

            

        安装依赖:yum install -y gcc gcc-c++ autoconf pcre-devel automake zlib zlib-devel openssl-devel 

    编译:./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/local/src/pcre-8.37

    安装:make -j 2 && make install          

    启动:/usr/local/nginx/sbin/nginx

    检查启动是否成功(80端口监听):netstat -lntup

    禁用防火墙和selinx

2、调优:

    主控进程(root):主要目的是产生和销毁worker进程的及生成日志,自己不处理请求。

    运行进程(worker进程:nobody):主要负责接受用户请求。

    vim /usr/local/nginx/conf/nginx.conf    //配置文件

        #如果改nginx的用户组则打开#user  nobody;将nobody更改,建议不改

        worker_processes  1;      //运行的线程数,建议将数量改为auto

        worker_cpu_affinity 00000001 ~~~~~01000000    //cpu绑定到1~7核cup上,建议不加

        worker_rlimit_nofile 1024      //一个worker进程默认打开的文件数,默认1024

        events {              //定义事件,

           use epoll            //事件模型,在linux中使用epoll模型最好

              worker_connections  1024;    //一个worker进程可以相应的最大并发数

            accept_mutex_delay 60;     //一个worker进程接受请求的时候拒绝其他请求的时间,慎重使用

            accept_mutex on        //是否打开负载均衡锁。当使用nginx作为负载均衡的时候,如果打开,可以让多个worker进程轮流的与客户端进行连接,真正成为一个负载均衡,否则一个进程一直在处理负载均衡,而其他的在闲置。

            }

        http{

            include       mime.types;

          default_type  application/octet-stream; 

            //这两行加载媒体格式,如css、js等,必须

----------------------------------------------------------------------------------

            #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

            #                  '$status $body_bytes_sent "$http_referer" '

            #                  '"$http_user_agent" "$http_x_forwarded_for"';

            #access_log  logs/access.log  main;

            //定义日志格式,可开启

----------------------------------------------------------------------------------

            sendfile        on;

            //开启高效文件传输模式sendfile指令指定ngnix是否调用,配合下面,需打开

            #tcp_nopush     on;

----------------------------------------------------------------------------------

            keepalive_timeout  65;      //持久链接

            tcp_nodelay on;

            client_header_timeout 15;    //客户端请求头读取的超时时间

            client_body_timeout 15;      //body请求读取的超时时间

            send_timeout 15           

            //这几个选项保持持久链接

----------------------------------------------------------------------------------

            #gzip  on;

            //是否开启压缩,需配置压缩的范围

            gzip_min_length 1k;       //压缩文件大小,大于1k的文件开始压缩,小于的会越压越大

            gzip_buffers 4 32k;      //缓冲区大小,4段,每段32k

            gzip_http_version 1.1;     //压缩版本,默认为1.1,可不写这行

            gzip_comp_level 5;        //压缩等级,范围1~9,一般写到4或5

            gzip_types image/png text/html text/xml application/javacript;    //压缩文件类型

            gzip_vary on;          //启动前端缓存服务

----------------------------------------------------------------------------------

            client_max_body_size 10m    //上传大小的限制,最大为10m,一般不用,在php内做限制

----------------------------------------------------------------------------------

          }

      server {

----------------------------------------------------------------------------------

          listen 80;      //监听端口

                写法:listen port;和listen ip:port     (注:port为端口)

----------------------------------------------------------------------------------

          server_name;      //服务器名称

                写法:www.baidu.com   *.baidu.com www.*  ~^.*\.baidu\.com$(正则) default_server

----------------------------------------------------------------------------------

          location写法

              =    //精确匹配

              ^~  //URI前半部分匹配

              ~  //正则表达式匹配,区分大小写

              ~*  //正则表达式匹配,不区分大小写

           

           location / {                  //根

                       root   html;          //网站根目录

                       index  index.html index.php index.htm;

                   }

----------------------------------------------------------------------------------

            error_page   500 502 503 504  /50x.html;

                    location = /50x.html {

                        root   html;

                    }

                //配置错误页面和状态码

----------------------------------------------------------------------------------

            proxy_pass    //重定向,写在server里,如:

                            location / {

                                    proxy_pass  http://www.sina.com;      //这样用比较少

                                  }

            //健康的

             location / {

                      proxy_pass http://192.168.31.223;

                      porxy_set_header Host $host;

                      porxy_set_header X-Real-IP $remote_addr;

                    }

            //在要访问的机器上配置(httpd服务)

            vim /etc/httpd/conf/httpd.conf

            //搜索LogFormat

                %h改%{X-Real-IP}i

            //搜索combined检查是否调用combined

            重启httpd

----------------------------------------------------------------------------------

           }

            //缓存

                proxy_cache_path /tmp/nginxcache levels=1:2 keys_zone=hello:10m;

                        /tmp/nginxcache      //缓存路径

                        levels=1:2          //目录层级,第一级目录为一个字符,第二级目录为两个字符,一个冒号为两层,两个冒号为三层,如:1:2:3

                        keys_zone=hello:10m      //从内存中取10m空间命名为hello

                proxy_cache_methods GET HEAD;     //缓存的格式

                proxy_cache_min_uses 1;      //设置为1的时候为这个资源启用一次开始缓存,设置为2时为启用两次时开始缓存

                proxy_cache_revalidate on;       //有效期验证

                proxy_cache_use_stale error timrout;        //如果缓存过期了,就去后端请求

                proxy_cache_valid 200 1d;      //缓存时间设置,200的状态码缓存一天

                proxy_connect_timeout 30s;      //缓存超时时间

                proxy_hide_header;          //隐藏http首部,可不配置

                proxy_buffer_size 8k;        //加速响应

                proxy_cache_bypass $http_authorization    //对哪些内容不要缓存,对http认证的内容不缓存

                //设置好以后需在server内的location内引用

                    proxy_cache  hello;

----------------------------------------------------------------------------------

                upstream backend{

                          server ip:端口  max_fails(检测次数)=3 fail_timeout 30s;

                          }

                //配置upstream后在server下的location下的proxy_pass改为

                          porxy_pass http://backend;

----------------------------------------------------------------------------------









LNMP调优的更多相关文章

  1. Nginx-PHP优化设置 + lnmp调优的关键影响因素 + php-fpm + nginx返回码 + tcp调优 + 最大文件描述符

    https://www.cnblogs.com/zengkefu/p/5602473.html最大文件描述符 https://blog.csdn.net/fanren224/article/detai ...

  2. Nginx 源码安装和调优

    常见web架构: LAMP  =Linux+Apache+Mysql+PHP LNMP  =Linux+Nginx+Mysql+PHP   nginx概述: 知道:1  不知道:2 Nginx (&q ...

  3. 46张PPT讲述JVM体系结构、GC算法和调优

    本PPT从JVM体系结构概述.GC算法.Hotspot内存管理.Hotspot垃圾回收器.调优和监控工具六大方面进行讲述.(内嵌iframe,建议使用电脑浏览) 好东西当然要分享,PPT已上传可供下载 ...

  4. 《深入理解Java虚拟机》调优案例分析与实战

    上节学习回顾 在上一节当中,主要学习了Sun JDK的一些命令行和可视化性能监控工具的具体使用,但性能分析的重点还是在解决问题的思路上面,没有好的思路,再好的工具也无补于事. 本节学习重点 在书本上本 ...

  5. Spark Shuffle原理、Shuffle操作问题解决和参数调优

    摘要: 1 shuffle原理 1.1 mapreduce的shuffle原理 1.1.1 map task端操作 1.1.2 reduce task端操作 1.2 spark现在的SortShuff ...

  6. 搭建 windows(7)下Xgboost(0.4)环境 (python,java)以及使用介绍及参数调优

    摘要: 1.所需工具 2.详细过程 3.验证 4.使用指南 5.参数调优 内容: 1.所需工具 我用到了git(内含git bash),Visual Studio 2012(10及以上就可以),xgb ...

  7. jvm系列(四):jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)

    文章同步发布于github博客地址,阅读效果更佳,欢迎品尝 运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎 ...

  8. jvm系列(六):jvm调优-从eclipse开始

    jvm调优-从eclipse开始 概述 什么是jvm调优呢?jvm调优就是根据gc日志分析jvm内存分配.回收的情况来调整各区域内存比例或者gc回收的策略:更深一层就是根据dump出来的内存结构和线程 ...

  9. web前端性能调优

    最近2个月一直在做手机端和电视端开发,开发的过程遇到过各种坑.弄到快元旦了,终于把上线了.2个月干下来满满的的辛苦,没有那么忙了自己准备把前端的性能调优总结以下,以方便以后自己再次使用到的时候得于得心 ...

随机推荐

  1. python3练习100题——035

    原题链接:http://www.runoob.com/python/python-exercise-example34.html 题目:文本颜色设置. 学习了一下python3 的文本颜色设置. 其实 ...

  2. mysql的优化(经典必看)

    1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...

  3. JS高级---案例:验证用户输入的是不是邮箱

    案例:验证用户输入的是不是邮箱 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  4. 如何把U盘的两个盘或者多个盘合成一个

    1.插入U盘,导出所有重要数据. 2.右击我的电脑,点管理打开设备管理器. 3.在设备管理器里找到磁盘管理. 4.在磁盘管理右侧出现下图: 5.如图是windows 7的界面. 6.找到U盘,图上是磁 ...

  5. 简写函数字面量(function literal)

    如果函数的参数在函数体内只出现一次,则可以使用下划线代替: val f1 = (_: Int) + (_: Int) //等价于 val f2 = (x: Int, y: Int) => x + ...

  6. 理解JWT(JSON Web Token)认证

    理解JWT(JSON Web Token)认证 最近想做个小程序,需要用到授权认证流程.以前项目都是用的 OAuth2 认证,但是Sanic 使用OAuth2 不太方便,就想试一下 JWT 的认证方式 ...

  7. CQYZOJ P1392 拔河问题

    题目\(1\) Description 一个学校举行拔河比赛,所有的人被分成了两组,每个人必须(且只能够)在其中的一组,且两个组内的所有人体重加起来尽可能地接近. Input 第\(1\)行是一个\( ...

  8. Python之路Day02

    一.While while -- 循环 while 条件: 循环体 break -- 终止当前循环 while True:    print("爱情买卖")    break   ...

  9. EF CodeFirst配置领域类

    当我们不想使用EF的默认约定时,可以手动配置领域类,但还是推荐少配置,Simple is best! 两种配置方式: 1.Data Annotation Attributes[数据注解特性]  数据注 ...

  10. jQuery捕获

    获得内容 - text().html() 以及 val() 三个简单实用的用于 DOM 操作的 jQuery 方法: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元 ...