zoukankan      html  css  js  c++  java
  • nginx配置文件

    配置文件结构

    • Nginx的配置文件是一个纯文本文件,它一般位于Nginx安装目录的conf目录下,整个配置文件是以block的形式组织的。每个block一般以一个大括号“{}”来表示,block可以分为几个层次,整个配置文件中main指令位于最高层,在main层下面可以有Events、HTTP等层级,而在HTTP层中又包含有server层,即server block,server block中又可分为location层,并且一个server block中可以包含多个location block

    • Nginx配置文件主要分为4部分:main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。main部分设置的指令将影响其他所有设置;server部分的指令主要用于指定主机和端口;upstream指令主要用于负载均衡,设置一系列的后端服务器;location部分用于匹配网页位置。这四者之间的关系如下:server继承main,location继承server,upstream既不会继承其他设置也不会被继承

    默认配置文件

    #user  nobody;   # Nginx用户及组:用户 组。window下不指定
    worker_processes  1;   #工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU
    #全局错误日志存放位置
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    #pid        logs/nginx.pid;   # pid(进程标识符):存放路径。
    #工作模式及连接数上限
    events {
    use   epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式
    worker_connections  1024;  #单个后台worker process进程的最大并发链接数  具体解释见补充
    }
    http {
        include       mime.types;    #设定mime类型,类型由mime.type文件定义
        default_type  application/octet-stream;
        #日志格式设置  具体见补充
    #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;   用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径;
        sendfile        on;   #sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。
        #tcp_nopush     on;  #此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用
        #keepalive_timeout  0;    #连接超时时间, 0表示永不超时
        keepalive_timeout  65;
        #gzip  on;     #开启gzip压缩
        server {
            listen       80;    #配置监听端口
            server_name  localhost;           #配置web域名
            #charset koi8-r;             #配置字符
            #access_log  logs/host.access.log  main;         #定义使用的日志格式  main格式已经在全局定义
    
    
            location / {
                root   html;                   #定义服务器的默认网站目录
                index  index.html index.htm;        #定义主页
            }
            #error_page  404              /404.html;            #定义404跳转页面
            error_page   500 502 503 504  /50x.html;       #定义500 502 503 504 跳转页面
            location = /50x.html {
                root   html;
            }
            #代理把php的解析请求转发到php解释器上
            #location ~ .php$ {
            #    proxy_pass   http://127.0.0.1;
            #}
            #使用FastCGI解析php
            #location ~ .php$ {
            #    root           html;
            #    fastcgi_pass   127.0.0.1:9000;
            #    fastcgi_index  index.php;
            #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            #    include        fastcgi_params;
            #}
            #定义禁止访问 .ht**文件
            #location ~ /.ht {
            #    deny  all;
            #}
        }
    
       #虚拟主机的设置
    
        #server {
        #    listen       8000;
        #    listen       somename:8080;
        #    server_name  somename  alias  another.alias;
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    #加密的http设置
        # HTTPS server
        #
        #server {
    
        #    listen       443;
        #    server_name  localhost;
        #    ssl                  on;
        #    ssl_certificate      cert.pem;
        #    ssl_certificate_key  cert.key;
        #    ssl_session_timeout  5m;
        #    ssl_protocols  SSLv2 SSLv3 TLSv1;
        #    ssl_ciphers  HIGH:!aNULL:!MD5;
        #    ssl_prefer_server_ciphers   on;
        #    location / {
        #        root   html;
        #        index  index.html index.htm;
        #    }
        #}
    
     
    
    }
    

    nginx高级配置

    • worker_processes nginx worker进程数量
    • worker_rlimit_nofile 每个worker进程打开的文件最大数量
    • worker_connections 每个worker进程允许的最大连接数
    • server_tokens 是否显示nginx版本号
    • sendfile 优化nginx 读文件,减少上下文切换,把硬盘->kernel buffer ->user buffer -> kernel socket buffer ->协议栈 缩减为 硬盘-> kernel buffer -> 协议栈,原理是直接从kernel buffer 拷贝到了kernel socket buffer
    • add_header 在response 的header中自定义key value
    • keepalive_timeout nginx和客户端保持连接的时间,默认为75s,0表示不保持连接
    • lingering_timeout nginx延迟关闭连接的时间,nginx默认先关闭tcp连接的写,等待一段时间之后再关闭连接的读,延迟服务器发送rst包
    • client_header_buffer_size 客户端request大小,包括header和url,超过这个值之后以large_client_header_buffers为最大值
    • large_client_header_buffers 客户端request大小,包括header和url,超过这个值之后,将返回414错误
    • client_max_body_size 客户端request body大小,限制post数据的大小,超过大小之后返回413错误
    • client_body_timeout 定义读取客户端请求正文的超时。超时仅设置在两个连续读取操作之间的时间段,而不是用于传输整个请求体。如果客户端在此时间内未发送任何内容,则会将408(请求超时)错误返回给客户端。
    • client_header_timeout定义读取客户端请求标头的超时。如果客户端在此时间内未传输整个头,则会向客户端返回408(请求超时)错误。
    • server_names_hash_bucket_size 保存服务器名字的hash表是由指令server_names_hash_max_size 和server_names_hash_bucket_size所控制的。参数hash bucket size总是等于hash表的大小,并且是一路处理器缓存大小的倍数。在减少了在内存中的存取次数后,使在处理器中加速查找hash表键值成为可能。如果hash bucket size等于一路处理器缓存的大小,那么在查找键的时候,最坏的情况下在内存中查找的次数为2。第一次是确定存储单元的地址,第二次是在存储单元中查找键 值。因此,如果Nginx给出需要增大hash max size 或 hash bucket size的提示,那么首要的是增大前一个参数的大小.
    • open_file_cache max=65535 inactive=20s; 缓存静态文件,max 指定最大缓存多少个,inactive 指定缓存时间
    • open_file_cache_valid 检查静态文件缓存的时间,超过该时间没有命中则删除该静态缓存
    • open_file_cache_min_uses 指定时间内使用该缓存的次数,未达到该次数则删除静态缓存
    • fastcgi_connect_timeout 指定连接到后端FastCGI的超时时间
    • fastcgi_send_timeout指定向FastCGI传送请求的超时时间,这个值是已经完成两次握手后向FastCGI传送请求的超时时间。
    • fastcgi_read_timeout指定接收FastCGI应答的超时时间,这个值是已经完成两次握手后接收FastCGI应答的超时时间。
    • fastcgi_buffer_size 指定将用多大的缓冲区来读取从FastCGI服务器到来应答的第一部分
    • fastcgi_buffers 指定了从FastCGI服务器到来的应答,指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答请求。如果一个PHP脚本所产生的页面大小为256KB,那么会为其分配4个64KB的缓冲区来缓存;如果页面大小大于256KB,那么大于256KB的部分会缓存到fastcgi_temp指定的路径中
    • fastcgi_busy_buffers_size 系统很忙时可以使用的fastcgi_buffers大小,一般fastcgi_buffers的两倍
    • fastcgi_temp_file_write_size 128k; 表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍
    • fastcgi_max_temp_file_size 0; 用于配置所有临时文件的总体积大小
    • fastcgi_cache 为缓存实际使用的共享内存指定一个区域,相同的区域可以用在不同的地方
    • fastcgi_cache_key 设置缓存的关键字
    • fastcgi_cache_path path [levels=m:n] keys_zone=name:size [inactive=time] [max_size=size] 指定FastCGI缓存的路径以及其他的一些参数,所有的数据以文件的形式存储,缓存的关键字(key)和文件名为代理的url计算出的MD5值。
    • fastcgi_cache_methods 指定缓存的请求类型
    • fastcgi_cache_min_uses 指定了经过多少次请求的相同URL将被缓存
    • fastcgi_no_cache 定义不缓存的条件
    • fastcgi_cache_bypass 定义不缓存的条件
    • fastcgi_cache_use_stale 定义那些情况使用过期缓存
    • fastcgi_intercept_errors 是否传递4**5**错误信息到客户端

    nginx 调优后的配置文件

    user  www www;
    worker_processes 40;
    worker_rlimit_nofile 65535;
    
    error_log  /data/logs/nginx/error.log;
    pid        run/nginx.pid;
    
    events {
        use epoll;
        worker_connections  65535;
    }
    
    http {
    	server_tokens off;
    	include       mime.types;
    	default_type  application/octet-stream;
    	sendfile on;
    	gzip on;
    	set_real_ip_from  10.0.0.0/8;
    	set_real_ip_from  172.16.0.0/16;
    	set_real_ip_from  192.168.0.0/24;
    	set_real_ip_from  127.0.0.1;
    	real_ip_header X-Forwarded-For;
    
    	map $remote_addr $clientip {
    	        default $remote_addr;
    	}
    
    
    	log_format  main  '$http_host $remote_addr ${request_time} - [$time_local] '
    	                  '"$request" $status $body_bytes_sent '
    	                  '"$http_referer" - "$http_user_agent" "$server_addr"';
    
    
    	add_header XYWY_HEADER $hostname;
    	keepalive_timeout  0;
    	lingering_timeout 50ms;
    
    	client_header_buffer_size 8k;
    	client_max_body_size 20m;
    	client_body_timeout 10s;
    	client_header_timeout 5s;
    	large_client_header_buffers 8 4k;
    	server_names_hash_bucket_size 128;
    
    	open_file_cache max=65535 inactive=20s;
    	open_file_cache_valid 30s;
    	open_file_cache_min_uses 3;
    
            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;
            fastcgi_max_temp_file_size 0;
    
            fastcgi_temp_path /dev/shm/nginx_tmp;
            fastcgi_cache_path /dev/shm/nginx_cache levels=1:2 keys_zone=common_cache:20m inactive=5m max_size=1024m;
            fastcgi_cache_key "$request_method$host$request_uri";
            fastcgi_cache_min_uses 1;
            fastcgi_cache_bypass $cookie_nocache $arg_nocache;
            fastcgi_no_cache $cookie_nocache $arg_nocache;
            fastcgi_cache_use_stale error timeout http_500 http_404;
            fastcgi_cache_methods GET HEAD POST;
    	fastcgi_intercept_errors on;
    
    
  • 相关阅读:
    Linux下查看文件和文件夹大小
    ADB Usage Complete / ADB 用法大全
    Android adb你真的会用吗?
    数组方法-map方法
    数组方法-forEach方法
    js-深入浅出之闭包
    js-作用域-变量申明提升
    递归思想及几个经典题目
    js中eval 详解
    arguments对象 的使用方法
  • 原文地址:https://www.cnblogs.com/pycode/p/6588832.html
Copyright © 2011-2022 走看看