nginx配置

nginx配置

基本结构

main        # 全局配置,对全局生效  
├── events  # 配置影响 nginx 服务器或与用户的网络连接  
├── http    # 配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置  
│   ├── upstream # 配置后端服务器具体地址,负载均衡配置不可或缺的部分  
│   ├── server   # 配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块  
│   ├── server  
│   │   ├── location  # server 块可以包含多个 location 块,location 指令用于匹配 uri  
│   │   ├── location  
│   │   └── ...  
│   └── ...  
└── ...  
  • 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
  • events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
  • http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
  • server块:配置虚拟主机的相关参数,一个http中可以有多个server。
  • location块:配置请求的路由,以及各种页面的处理情况。

配置详解

    #nginx运行的用户和用户组
    user  nginx;

    #错误日志路径、级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
    #error_log  /etc/nginx/log/error.log warn;

    #nginx进程运行文件路径
    #pid /etc/nginx/log/nginx.pid;   

    #nginx进程数,通常设置成和cpu的数量相等
    worker_processes  4;

    #work 绑定 cpu 4 work 绑定 4cpu减少切换cpu,更好的使用cpu核心缓存(具体模块文档对其详解)
    #第一个进程绑定第一个 第二个进程绑定第二个核心 第三个进程绑定第四个核心 第三个进程绑定第三个核心
    worker_cpu_affinity 0001 0010 1000 0100;

    #每个进程允许的最多连接数
    #HTTP请求本地资源,最大并发数worker_connections *worker_processes
    #HTTP1.1的浏览器访问要占两个连接,最大并发数worker_connections * worker_processes /2
    #HTTP反向代理,客户端占两个连接,后端服务占两个连接,最大并发数worker_connections * worker_processes/4
    worker_rlimit_nofile 65535;


    events {
        #设置网路连接序列化,防止惊群现象发生,默认为on
        accept_mutex on;

        #设置一个进程是否同时接受多个网络连接,默认为off
        multi_accept on; 

        #参考事件模型(具体模块文档对其详解)
        use epoll;

        #单个进程最大连接数(最大连接数=连接数+进程数)
        worker_connections  1024;
    }


    http {
        #文件扩展名与文件类型映射表
        include       /etc/nginx/mime.types;

        #默认文件类型
        default_type  application/octet-stream;

        #默认编码
        charset utf-8;
                    
        #服务器名字的hash表大小
        #server_name_hash_bucket_size 128;

        #这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
        open_file_cache max=65535 inactive=60s;

        #这个是指多长时间检查一次缓存的有效信息。
        open_file_cache_valid 80s;

        #open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
        open_file_cache_min_uses 1;
    
        #语法:open_file_cache_errors on | off 默认值:open_file_cache_errors off 使用字段:http, server, location 这个指令指定是否在搜索一个文件是记录cache错误.
        open_file_cache_errors on;

        #客户端请求头部的缓冲区大小
        client_header_buffer_size 32k;

        #允许客户端请求的最大单个文件字节数
        client_max_body_size 8m;

        #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。
        sendfile on;

        #开启目录列表访问,适合下载服务器,默认关闭
        autoindex on;

        #允许或禁止使用socke的TCP_CORK的选项,使用sendfile的时候使用
        tcp_nopush on;
        tcp_nodelay on;

        #长连接超时时间,单位秒
        keepalive_timeout 120;

        #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 128k;

        #gzip模块设置
        gzip on; #开启gzip压缩输出
        gzip_min_length 1k;    #最小压缩文件大小
        gzip_buffers 4 16k;    #压缩缓冲区
        gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
        gzip_comp_level 2;     #压缩等级
        gzip_types text/plain application/x-javascript text/css application/xml;    #压缩类型,默认就已经包含textml,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
        gzip_vary on;

        #开启限制IP连接数的时候使用
        #limit_zone crawler $binary_remote_addr 10m;

        #负载均衡看详情
        #upstream test {
        #    server 
        #}
        #虚拟主机配置
        server {
            #监听端口
            listen       80;

            #域名,可以多个用空格隔开,精确匹配:server_name www.test.com ;
            #左侧通配:server_name *.test.com ;
            #右侧统配:server_name www.test.* ;
            #正则匹配:server_name ~^www\.test\.*$ ;
            #匹配优先级:精确匹配 > 左侧通配符匹配 > 右侧通配符匹配 > 正则表达式匹配
            server_name  localhost;

            #默认文件路口
            root   /etc/nginx/html;
            index  index.html index.htm;

            #禁止访问的ip地址,可以为all
            #deny ip;
            #允许访问的ip地址,可以为all
            #allow ip;

            #图片缓存时间设置
            location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$
            {
              expires 10d;
            }

            #JS和css缓存时间设置
            location ~ .*.(js|css)?$
            {
              expires 1h;
            }

            #日志格式设定
            #$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
            #$remote_user:用来记录客户端用户名称;
            #$time_local:用来记录访问时间与时区;
            #$request:用来记录请求的url与http协议;
            #$status:用来记录请求状态;成功是200,
            #$body_bytes_sent :记录发送给客户端文件主体内容大小;
            #$http_referer:用来记录从那个页面链接访问过来的;
            #$http_user_agent:记录客户浏览器的相关信息;
            #通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
            #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  /etc/nginx/log/host.access.log  main;
            #access_log  /etc/nginx/log/host.access.404.log  log404;
            #error_log  /etc/nginx/log/host.error.log warn;

            #对:"/test"反向代理
            #location /test {
              #proxy_pass http://127.0.0.1:82;
              #proxy_redirect off;
              #proxy_set_header X-Real-IP $remote_addr;
             
              #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
              #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             
              #以下是一些反向代理的配置,可选。
              #proxy_set_header Host $host;

              #允许客户端请求的最大单文件字节数
              #client_max_body_size 10m;

              #缓冲区代理缓冲用户端请求的最大字节数,
              #如果把它设置为比较大的数值,例如256k,那么,无论使用firefox还是IE浏览器,来提交任意小于256k的图片,都很正常。如果注释该指令,使用默认的client_body_buffer_size设置,也就是操作系统页面大小的两倍,8k或者16k,问题就出现了。
              #无论使用firefox4.0还是IE8.0,提交一个比较大,200k左右的图片,都返回500 Internal Server Error错误
              #client_body_buffer_size 128k;

              #表示使nginx阻止HTTP应答代码为400或者更高的应答。
              #proxy_intercept_errors on;

              #后端服务器连接的超时时间_发起握手等候响应超时时间
              #nginx跟后端服务器连接超时时间(代理连接超时)
              #proxy_connect_timeout 90;

              #后端服务器数据回传时间(代理发送超时)
              #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据
              #proxy_send_timeout 90;

              #连接成功后,后端服务器响应时间(代理接收超时)
              #连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)
              #proxy_read_timeout 90;

              #设置代理服务器(nginx)保存用户头信息的缓冲区大小
              #设置从被代理服务器读取的第一部分应答的缓冲区大小,通常情况下这部分应答中包含一个小的应答头,默认情况下这个值的大小为指令#proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小
              #proxy_buffer_size 4k;

              #proxy_buffers缓冲区,网页平均在32k以下的设置
              #设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k
              #proxy_buffers 4 32k;

              #高负荷下缓冲大小(proxy_buffers*2)
              #proxy_busy_buffers_size 64k;

              #设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长
              #设定缓存文件夹大小,大于这个值,将从upstream服务器传
              #proxy_temp_file_write_size 64k;
              #}
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /etc/nginx/html;
          }  
      }
    }

几个常见配置项:

  • 1.$remote_addr 与 $http_x_forwarded_for 用以记录客户端的ip地址;
  • 2.$remote_user :用来记录客户端用户名称;
  • 3.$time_local : 用来记录访问时间与时区;
  • 4.$request : 用来记录请求的url与http协议;
  • 5.$status : 用来记录请求状态;成功是200;
  • 6.$body_bytes_s ent :记录发送给客户端文件主体内容大小;
  • 7.$http_referer :用来记录从那个页面链接访问过来的;
  • 8.$http_user_agent :记录客户端浏览器的相关信息;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值