配置

主要描述nginx.conf文件的内容

nginx.conf文件结构

主要由三块组成 全局块 events块 http块,http块中包含http全局块和多个server块,每个server块中包含server全局块和多个location块,采用就近原则生效

全局块

配置一些影响整体运行的指令,通常有服务器用户组 允许生成的worker process nginx.pid存放路径 日志存放路径 类型 配置文件引入

events块

影响nginx服务器与用户的网络连接,这一块的设置对服务的性能影响较大。通常有是否开启对WP下的网络进行序列化 是否允许同时接受多个网络连接 事件驱动模型 每个WP可以同时支持处理的最大连接数

http块

重要组成部分,代理、缓存和日志定义、第三方模块的配置。 通常配置 文件引入MIME-TYPE定义 日志自定义 是否使用sendfile传输文件 连接超时时间 单连接请求数上限

具体配置详解

 

#$开头是变量
#定义Nginx运行的用户和用户组
user work work;
#nginx进程数,建议设置为等于CPU总核心数
worker_processes  auto;
#指当一个nginx进程打开的最多文件描述符数目
worker_rlimit_nofile 204800;
#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
error_log /opt/log/nginx/error.log error;
#工作模式及连接数上限
events {
       #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 
       #epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型
       use epoll;
       #单个后台worker process进程的最大并发链接数
       worker_connections  102400;
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
       #文件扩展名与文件类型映射表
       include       mime.types;
       #默认文件类型
       default_type application/octet-stream;
       #默认编码
       charset utf-8;
       #设定日志格式
       #log_format  main '$idXXXX\t$remote_addr\t$remote_user\t$time_local\t$http_host\t$request\t'
       #             '$status\t$body_bytes_sent\t$http_referer\t'
       #            '$http_user_agent\t$http_x_forwarded_for\t$request_time\t$upstream_response_time\t$userid';
       log_format main "$cookie_idXXXX\t$remote_addr\t$remote_user\t[$time_local]\t$request_method\t$host\t$request_uri\t"
                       "$request_time\t$status\t$body_bytes_sent\t'$http_referer'\t"
                       "'$http_user_agent'\t'$http_x_forwarded_for'\t$upstream_addr\t$upstream_response_time\t$upstream_status\t";
                 
    #不可见字符分隔日志格式
   #include other_log_format.conf;
    #实时日志收集json格式日志
   #include json_log_format.conf;
 
       #日志流格式
       log_format stream_log "$cookie_idXXXX\t$remote_addr\t$remote_user\t[$time_local]\t$request_method\t$host\t$request_uri\t"
                     "$request_time\t$status\t$body_bytes_sent\t'$http_referer'\t"
                     "'$http_user_agent'\t'$http_x_forwarded_for'\t$upstream_addr\t$upstream_response_time\t3";
       
       #成功日志
       access_log  /opt/log/nginx/access.log main;
       #access_log syslog:local6:notice:log1.op.XXXXdns.org:514:nginx-main-log main;
       
       #指定nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
       #必须设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
       sendfile        on;
       #长连接超时时间,单位是秒
       keepalive_timeout  60;
       #服务器名称哈希表的最大值(默认512)[hash%size]
       server_names_hash_max_size 1024;
       #服务器名字的hash表大小
       server_names_hash_bucket_size 256;
       #客户请求头缓冲大小
       client_header_buffer_size 4k;
       #如果header过大,它会使用large_client_header_buffers来读取
       large_client_header_buffers 4 256k;
       client_header_timeout  1m;
       client_body_timeout    1m;
       send_timeout           1m;
       #防止网络阻塞
       tcp_nopush     on;
       tcp_nodelay    on;
       #允许客户端请求的最大单文件字节数
       client_max_body_size 50m;
       
       #缓冲区代理缓冲用户端请求的最大字节数
       client_body_buffer_size 50m;
       
       #nginx跟后端服务器连接超时时间(代理连接超时)
       proxy_connect_timeout 5;
       
       #后端服务器数据回传时间(代理发送超时)
       proxy_send_timeout 15;
       
       #连接成功后,后端服务器响应时间(代理接收超时)
       proxy_read_timeout 15;
       
       #设置代理服务器(nginx)保存用户头信息的缓冲区大小
       proxy_buffer_size 4k;
       
       #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置
       proxy_buffers 8 32k;
       
       #高负荷下缓冲大小(proxy_buffers*2)
       proxy_busy_buffers_size 64k;
       
       #设定缓存文件夹大小,大于这个值,将从upstream服务器传
       proxy_temp_file_write_size 64k;
       proxy_intercept_errors  on;
       #客户端放弃请求,nginx也放弃对后端的请求
       #proxy_ignore_client_abort on;
 
    #代理缓存头信息最大长度[设置头部哈希表的最大值,不能小于你后端服务器设置的头部总数]
   proxy_headers_hash_max_size 512;
    #设置头部哈希表大小(默认64)[这将限制头部字段名称的长度大小,如果你使用超过64个字符的头部名可以加大这个值。]
   proxy_headers_hash_bucket_size 256;
 
    #变量哈希表的最大值(默认值)
   variables_hash_max_size 512;
    #为变量哈希表制定关键字栏的大小(默认64)
   variables_hash_bucket_size 128;
       
       #开启gzip压缩输出
       gzip on;
       #最小压缩文件大小
       gzip_min_length 1k;
       #压缩缓冲区
       gzip_buffers     4 16k;
       #压缩等级
       gzip_comp_level 9;
       #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
       gzip_http_version 1.0;
       #压缩类型,默认就已经包含textml
       gzip_types text/plain application/x-javascript application/json application/javascript text/css application/xml text/javascript image/gif image/png;
       gzip_vary on;
 
       #map模块使用
       map_hash_max_size 102400;
       map_hash_bucket_size  256;
 
       #Tengine Config
       #concat on;
       #trim on;
       #trim_css off;
       #trim_js off;
       server_tokens off;
       #footer "<!-- $remote_addr $server_addr $upstream_addr -->";
 
       #rewrite_log on;
       fastcgi_intercept_errors on;
   #include other config file
       include ../conf.d/*.conf;
    #包含一些特殊站点的配置文件,此目录下文件暂时不包含在git自动管理过程中
   include ../special/*.conf;
 
    #屏蔽不加主机域名的默认请求
   #server {
       #   listen *:80 default;
       #   server_name _ "";
       #   return 444;
   #}
    
   #ceshi by dongange 2016-01-07
 
   #Nginx状态监测模块配置
    req_status_zone server "$server_name,$server_addr:$server_port" 10M;
   req_status server;
   server {
       listen 127.0.0.1:80;
       server_name 127.0.0.1;
       access_log /opt/log/nginx/nginx_status/status_access.log main;
           location /status {
                req_status_show;
                root /opt/nginx/www.root.com
                access_log /opt/log/nginx/nginx_status/status_access.log main;
                allow 127.0.0.1;
                deny all;
                }
           location /stub_status {
                stub_status on;
                access_log /opt/log/nginx/nginx_status_stub/status_stub_access.log main;
                allow 127.0.0.1;
                deny all;
           }
           location /check_status {
                check_status;
                access_log /opt/log/nginx/nginx_status_check/status_access_check.log main;
                allow 127.0.0.1;
                deny all;
           }
}

路径配置方式

静态动态分离,除了静态资源以外的请求都交给Tomcat处理.

location / {  
   proxy_pass http://localhost:8080
}  
location ^~ /static/ {  
   root /webroot/static/;  
}  
location ~* \.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ {  
   root /webroot/res/;  
}
}