nginx基本配置与参数说明

来源:互联网 发布:南风知我意1七微百度云 编辑:程序博客网 时间:2024/06/10 23:17

# 运行用户

user root

# 启动进程,通常设置成和CPU的数量相等或者2倍于CPU

worker_processes 1;

#全局错误日志及PID文件
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events

{

    use epoll;

    # 使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。

    # 补充说明:与apache相类,nginx针对不同的操作系统,有不同的事件模型

    # A)标准事件模型

     # Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll

    # B)高效事件模型

     # Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。

    # Epoll:使用于Linux内核2.6版本及以后的系统。

    # /dev/poll:使用于Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。

    # Eventport:使用于Solaris 10。 为了防止出现内核崩溃的问题, 有必要安装安全补丁。

    worker_connections 204800;

    # 每个工作进程的最大连接数量。根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。worker_processes*worker_connections

    keepalive_timeout 60;

    # keepalive超时时间。


    client_header_buffer_size 4k;

    # 客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。

    # 分页大小可以用命令getconf PAGESIZE 取得。

    # [root@web001 ~]# getconf PAGESIZE

    # 4096

    # 但也有client_header_buffer_size超过4k的情况,但是client_header_buffer_size该值必须设置为“系统分页大小”的整倍数。

    open_file_cache max=65535 inactive=60s;

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


    open_file_cache_valid 80s;

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


    open_file_cache_min_uses 1;

    # open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。

}

http {

    # 设定mime类型,类型由mime.type文件定义

    include mime.types;

    default_type application/octet-stream;

    #设定日志格式

    $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 logs/access.log(放日志的地址) main;

    #对于普通应用,必须设置为on

    # 如果用来进行下载等应用磁盘IO重负载应用,可设置为off

    sendfile on;#高效传输文件模式

    # 连接超时时间 s

    keepalive_timeout 65;

    tcp_nodelay on;

    #开启gzip压缩
    gzip on;

    #设定请求缓冲
    client_header_buffer_size 128k;
    large_client_header_buffers 4 128k;gzip_disable "MSIE [1-6]."


    server{

        # 监听80端口

        listen 80;

        # 定义使用此访问

        server_name www.nginx.cn;


        # 定义服务器的默认网站根目录位置

        root html

        # 设定本虚拟主机的访问日志
        access_log logs/nginx.access.log main;

        # 默认请求
        location / {

             #定义首页索引文件的名称
            index index.php index.html index.htm;

        }

        # 定义错误页面

        error_page 500 502 503 504 /50x.html;

        location = /50x.html {

        }

        # 静态文件,nginx自己处理
        location ~ ^/(images|javascript|js|css|flash|media|static)/ {

            # 过期30天,静态文件不怎么更新,过期可以设大一点,
            # 如果频繁更新,则可以设置得小一点。
            expires 30d;
        }


        #禁止访问 .htxxx 文件
       location ~ /.ht {
            deny all;
       }

   }