解析 nginx 常用配置文件

发布时间:2020-12-03编辑:脚本学堂
本文分享一段nginx的配置文件,包括了nginx常见的多种配置节信息,有需要的朋友,可以借鉴参考下,挺不错的。

以下配置内容,基于Nginx1.5.3版本。

配置内容如下:
 

#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; 
     
    client_header_timeout  30;  #设置客户端请求头读取超时时间,如果在这个时间后客户端还没有发送任何数据,Nginx返回“Request time out(408)”错误。 
    client_body_timeout    30;  #设置客户端请求主体读取超时时间,如果在这个时间后客户端还没有发送任何数据,Nginx返回“Request time out(408)”错误,默认值是60。 
    send_timeout           3m;  #指定响应客户端的超时时间,这个超时仅限于两个阅读活动之间的时间,如果这个时间后客户端没有任何活动,Nginx将会关闭连接。
    
    client_header_buffer_size    1k;   
    large_client_header_buffers  4 4k;   
 
    sendfile        on; 
    tcp_nopush      on;   
    tcp_nodelay     on; 
    #tcp_nopush     on; 
 
    #keepalive_timeout  0; 
    keepalive_timeout  65;  #第一个参数指定客户端连接保持活动的超时时间,在这个时间之后,服务器会关掉连接,第二个参数是可选的,它指定了消息头保持活动的有效时间,即响应中的timeout=time,它可以告诉某些浏览器关闭连接,因此服务器就不必关闭连接了,如果没有这个参数,Nginx不会发送Keep-Alive头。 
 
    gzip  on; 
    #该指令用于开启或关闭gzip模块(on/off) 
    gzip_min_length 1k; 
    #设置允许压缩的页面最小字节数,页面字节数从header头得content-length中进行获取。默认值是0,不管页面多大都压缩。建议设置成大于1k的字节数,小于1k可能会越压越大。 
    gzip_buffers 4 16k; 
    #设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存。 
    #gzip_http_version 1.1; 
    #识别http的协议版本(1.0/1.1) 
    gzip_comp_level 2; 
    #gzip压缩比,1压缩比最小处理速度最快,9压缩比最大但处理速度最慢(传输快但比较消耗cpu) 
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript image/gif 
    #匹配mime类型进行压缩,无论是否指定,”text/html”类型总是会被压缩的。 
    gzip_vary on; 
    #和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩 
     
    upstream localhost {   
        #根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。   
        #同一机器在多网情况下,路由切换,ip可能不同   
        #ip_hash;    
        server localhost:9097 weight=1 max_fails=2 fail_timeout=3s;   
        server localhost:9098 weight=1 max_fails=2 fail_timeout=3s;   
        #jvm_route $cookie_JSESSIONID|sessionid reverse;    #session复制的配置 
        ip_hash;    
    }  
      
    #upstream backend { 
    #   server localhost:9097; 
    #   server localhost:9098; 
    #} 
 
    server { 
        listen       80; 
        server_name  localhost; 
 
        #charset koi8-r; 
 
        #access_log  logs/host.access.log  main; 
 
        #拒绝访问WEB-INF下的文件 
        location ~ ^/(WEB-INF)/ {   
            deny all;   
        }   
   
        ###所以的静态文件人gif、jpg等都在本地打开,存放的目录为html,保存时间为30天   
        location ~ .*.(gif|jpg|jpeg|png|bmp|swf|css|js|html)$ {   
            root html;   
            access_log off;   
            expires 30d;   
        } 
        location / { 
            root   html; 
            index  login; 
            #include     proxy.conf;  #这个文件是我们新建的,要导入 
            proxy_pass   http://localhost; 
            proxy_redirect    off;#default 
            proxy_set_header   Host $host; 
            proxy_set_header   X-Real-IP $remote_addr; 
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;  
            proxy_set_header Via    "nginx"; 
            client_max_body_size   10m; 
            client_body_buffer_size   128k; 
            proxy_connect_timeout   1; #90 
            proxy_send_timeout   30; #90 
            proxy_read_timeout   30; #90 
            proxy_buffer_size   4k; 
            proxy_buffers   4 32k; 
            proxy_busy_buffers_size   64k; 
            proxy_temp_file_write_size  64k;   
        } 
 
        #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; 
    #    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; 
    #    } 
    #}
}