Nginx配置文件详解

默认nginx.conf配置文件

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    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;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #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;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

根据nginx.conf配置文件可以分为以下结构:

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、evens块:配置影响nginx服务器或用户的网络连接。常用设置包括 是否开启对多worker process下的网络序列化等,x每个worker process进程的最大连接数,是否允许同时接受多个网络连接,选取哪种事件驱动模型处理连接请求。

每个work process的最大连接数为1024

3、http块:可以嵌套多个server,配置代理、缓存、日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

3.1、http全局块:http全局块配置的指令包括文件引入、mime-type定义、日志自定义、连接超时时间、单连接请求数等。

3.2、server块:http块可以包括多个server块,而每个server块就相当于一个虚拟主机

4、server块:配置虚拟主机的相关参数,包括端口、主机名称、ip,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况,每个server都可以配置多个location块。


...              #全局块

events {         #events块
   ...
}

http      #http块
{
    ...   #http全局块
    
    server        #server块
    {
        ...       #server全局块
        
        location [PATTERN]   #location块
        {
            ...
        }
        location [PATTERN] 
        {
            ...
        }
    }
    server
    {
      ...
    }
    ...     #http全局块
}

配置文件详解:

#运行用户
user nobody;

#启动进程,通常设置成和cpu的数量相等
worker_processes 6;

#全局错误日志定义类型,日志级别【debug、info、notice、warn、error、crit(默认)、】
error_log log/error.log;
error_log log/error.log notice;
error_log log/error.log info;

#进程pid文件
pid /var/run/nginx.pid;

#工作模式及连接数上限
events {
    #设置网络连接序列化,防止惊群现象发生,默认为on
    accept_mutex on;
    
    #仅用于linux2.6以上内核,可以大大提高nginx的性能
    #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
    use epoll;
    
    #单个后台worker proesses进程的最大并大链接数
    worker_connections 1024;
    
    #客户端请求头部的缓冲区大小
    client_header_buffer_size 4k;
    
    #keepalive超时时间
    keepalive_timeout 60;
    
    #设置一个进程是否同时接受多个网络连接,默认为off
    #multi_accept off;
    
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
    
    #文件扩展名与文件类型映射表义
    include /etc/nginx/mime.types;
    
    #默认文件类型
    default_type application/octet-stream;
    
    #默认编码
    charset utf-8;
    
    #服务器名字的hash表大小
    server_names_hash_bucket_size 128;
    
    #客户端请求头部的缓冲区大小
    client_header_buffer_size 32k;
    
    #客户请求头缓冲大小
    large_client_header_buffers 4 64k;
    
    #设定通过nginx上传文件的大小
    client_max_body_size 8m;
    
    #开启目录列表访问,适合下载服务器,默认关闭
    autoindex off;
    
    #sendfile 指令指定nginx是否调用sendfile函数来输出文件,对于普通应用,必须设为on
    #如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度
    sendfile on;
    
    #每个进程每次调用数量不能大于设定的值,默认为0,代表没有上限
    sendfile_max_chunk 1000k;
    #连接超时时间,默认为75秒,可以在http,server,location块
    keepalive_timeout 65;
    
    #此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在sendfile的时候使用
    #tcp_nopuch on;
    
    #连接超时时间(单位:秒)
    keepalive_timeout 65;
    
    #gizp模块设置
    gzip on;    #开启gzip压缩输出
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascript text/css application/xml;
    gzip_varp on;
    
    #开启限制IP连接数的时候需要使用
    #limit_zone crawler $binary_remote_addr 10m;
    
    #负载均衡配置
    #通过weight可以配置轮询和权重策略,ip_hash是ip的hash策略
    upstream myserver {
        #例:(weight是权重的策略)
        #server 127.0.0.1:8080 weight=1;
        server ip:端口 
    }
    
    #错误页,这里可以统一定义,也可在server中分别定义
    error_page 404 http://xxxxxxxx;
    
    
    # http 虚拟主机的配置
    server {
        
        #单连接请求上限次数
        keepalive_requests 120;
        
        #监听端口
        listen 80;
        
        #域名或ip可以有多个,用空格隔开
        server_name 127.0.0.1;
        
        #默认入口文件名称
        index index.html index.htm index.php;
        
        #网站根目录
        #root /data/www/jd;
        
        #图片缓存时间设置
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf) ${
            expires 10d;
        }
        
        #JS和CSS缓存时间设置
        location ~ .*.(js|css)?${
            expires 1h;
        }
        
        #日志配置---start---  可以放在http块中统一定义,也可在server块中单独定义
        
        #关闭日志服务
        #access_log off;
        
        #日志格式定义
        #$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
        #$remote_user:用来记录客户端用户名称;
        #$time_local:用来记录访问时间和时区;
        #$request:用来记录请求的url与http协议;
        #$status:用来记录请求状态,成功是200;
        #$body_bytes_sent:记录发送给客户端文件主体内容大小;
        #$http_referer:用来记录从哪个页面链接访问过来的;
        #$http_user_agent:记录客户端浏览器的相关信息;
        
        #自定义日志格式
        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 /usr/local/nginx/logs/xxxxxx.access.log main;
        
        #日志配置---end---
        
        #对路由地址进行反向代理
        location /xxxxxx {
            #代理转发
            proxy_pass http://127.0.0.1:80;
            #修改代理服务器返回的响应头的location头域和refresh头域值,off禁止所有proxy_redirect指令
            proxy_redirect off;
            #只要用户在浏览器中绑定了VIP,VIP下面有RS;则就用$host;host是访问URL中的域名和端口
            proxy_set_header Host $host;
            
            #把源IP【$remote_addr,建立HTTP连接header里面的信息】赋值给X-Real-IP;这样在代码中$X-Real-IP来获取源IP
            proxy_set_header X-Real-IP $remote-addr;
            
            #在nginx作为代理服务器时,设置的IP列表,会把经过的机器ip,代理服务器ip都记录下来,用逗号隔开;代码中用echo $x-forwarded-for |awk -F, '{print $1}' 来作为源IP
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                
            #允许客户端请求的最大单文件字节数
            client_max_body_size 10m;
            
            #缓冲区代理缓冲用户端请求的最大字节数
            client_body_buffer_size 128k;
            
            #表示使nginx阻止HTTP应答代码为400或者更高的应答
            proxy_intercept_errors on;
            
            #nginx跟后端服务器连接超时时间(代理连接超时)
            proxy_send_timeout 90;
            
            #后端服务器数据回传时间,就是在规定时间之内后端服务器必须传完所有的数据
            proxy_send_timeout 90;
            
            #连接成功后,后端服务器响应的超时时间
            proxy_read_timeout 90;
            
            #设置代理服务器保存用户头信息的缓存区大小
            proxy_buffer_size 4k;
            
            #设置用于读取应答的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同,可能是4k或者8k
            proxy_buffers 4 32k;
            
            #高负荷下缓冲大小(proxy_buffers * 2)
            proxy_busy_buffers_size 64k;
            
            #设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长
            #设定缓存文件大小,大于这个值,将从upstream服务传
            proxy_temp_file_write_size 64k;
            
        }                        
    }        
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值