首页 > 代码库 > nginx.conf

nginx.conf

#运行用户#user nobody;#开启进程数 <=CPU数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 {#Linux下打开提高性能#事件响应模式为为高效的 poll 模式use epoll;#(使用epoll的I/O 模型补充说明:与apache相类,nginx针对不同的操作系统,有不同的事件模型A)标准事件模型Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或pollB)高效事件模型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. 为了防止出现内核崩溃的问题, 有必要安装安全补丁)#每个进程最大连接数(最大连接=连接数x进程数)#这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文#件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。#现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。#这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。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_buffer_size 1k;large_client_header_buffers 4 4k;#打开发送文件sendfile on;tcp_nopush on;#keepalive_timeout 0;#keepalive超时时间keepalive_timeout 65;#客户端上传文件大小控制client_max_body_size 8m;#打开gzip压缩gzip on;## 这里取得原始用户的IP地址map $http_x_forwarded_for $clientRealIp {"" $remote_addr;~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;}## 针对原始用户 IP 地址做限制limit_conn_zone $clientRealIp zone=TotalConnLimitZone:20m ;limit_conn TotalConnLimitZone 50;limit_conn_log_level notice;## 针对原始用户 IP 地址做限制limit_req_zone $clientRealIp zone=ConnLimitZone:20m rate=10r/s;#limit_req zone=ConnLimitZone burst=10 nodelay;limit_req_log_level notice;## 避免出现 502fastcgi_buffers 8 128k;send_timeout 60;#设定负载均衡的服务器列表upstream mytomcats { #weigth参数表示权值,权值越高被分配到的几率越大#代表请求分发的百分比,默认为1.#max_fails参数表示 最大失败3次#fail_timeout参数表示 请求失败后 多少秒内不访问 (默认10s)server 127.0.0.1:8081 weight=1 max_fails=3 fail_timeout=20s; server 127.0.0.1:8080 weight=2 max_fails=3 fail_timeout=20s; }server { #nginx监听的端口listen 80; #nginx过滤的ip或者域名 多个空格server_name 127.0.0.1 www.baidu.com; #字符charset UTF-8;#防止爬虫if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") { return 403;}#查看nginx实时状态location /status {#配置验证信息auth_basic "提示信息";#用户名密码保存地址auth_basic_user_file /usr/local/nginx/conf/htpasswd;#监控模块stub_status on;#关闭日志access_log off;}#静态文件location ~* \.(jpg|gif|png|swf|flv|wma|wmv|asf|mp3|mmf|zip|rar)$ { #expires 30d; (过期时间,30天,可适量调整) root /web/www/html/; } #过滤所有以.html结尾的,必须要验证location ~ \.html$ {auth_basic "Restricted";auth_basic_user_file /usr/local/nginx/conf/htpasswd;access_log off;}#所有以 /2.0 目录后面的代理location ^~/2.0/ {## 最多 5 个排队, 由于每秒处理 10 个请求 + 5个排队,你一秒最多发送 15 个请求过来,再多就直接返回 503 错误给你了limit_req zone=ConnLimitZone burst=5 nodelay;proxy_pass http://mytomcats; proxy_redirect off; #保留客户端请求的域名信息proxy_set_header Host $host;#保留客户端请求的真实 IP 地 址,用于某些访问统计proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; #设置代理服务器(nginx)保存用户头信息的缓冲区大小proxy_buffer_size 4k; #proxy_buffer缓冲区,网页平均在32k以下的话,这样设置proxy_buffers 4 32k; #高负荷下缓冲大小 (proxy_buffers*2proxy_busy_buffers_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器当代理下载的文件超过该参数设置的大小,nginx会先将文件写入临时目录?(缺省为????nginx?安装目下/proxy_temp目录)proxy_temp_file_write_size 64k; } #禁止访问所有.txt文件#     location ~/\.txt {# deny all;# }}# another virtual host using mix of IP-, name-, and port-based configuration server {#多监听 #listen localhost:8666;#主机名#server_name LIULJ2576;#WEB文件路径#root E:/Portal;#默认首页#index HomePage.html; #location / {# #这里相当于局部变量# root E:/Portal;# index HomePage.html;#}}# HTTPS server HTTPS SSL加密服务器##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 ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;# ssl_prefer_server_ciphers on;# location / {# root html;# index index.html index.htm;# }#}}