默认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 {#设置网络连接序列化,防止惊群现象发生,默认为onaccept_mutex on;#仅用于linux2.6以上内核,可以大大提高nginx的性能#事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventportuse 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来获取源IPproxy_set_header X-Real-IP $remote-addr;#在nginx作为代理服务器时,设置的IP列表,会把经过的机器ip,代理服务器ip都记录下来,用逗号隔开;代码中用echo $x-forwarded-for |awk -F, '{print $1}' 来作为源IPproxy_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或者8kproxy_buffers 4 32k;#高负荷下缓冲大小(proxy_buffers * 2)proxy_busy_buffers_size 64k;#设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长#设定缓存文件大小,大于这个值,将从upstream服务传proxy_temp_file_write_size 64k;} }
}