user                  nginx nginx;    #定义Nginx运行的用户和用户组
worker_processes 1; #nginx进程数,建议设置为等于CPU总核心数
worker_rlimit_nofile 1024; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致
error_log        /var/log/nginx/error.log info; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]
pid /var/run/nginx.pid; #进程文件 #工作模式与连接数上限
events {
use epoll; #设置用于复用客户端线程的轮询方法,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024; #单个进程最大连接数(最大连接数=连接数*进程数)
multi_accept on; #收到一个新连接通知后接受尽可能多的连接
} #http服务器(详细参数:http://nginx.org/en/docs/http/ngx_http_core_module.html)
http {
include /etc/nginx/mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型
access_log off; #访问日志。关闭这个选项可以让读取磁盘IO操作更快(aka,YOLO)
charset utf-8; #默认编码
server_tokens off; #关闭在错误页面中的nginx版本数字,这样对于安全性是有好处的
sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off
autoindex off; #开启目录列表访问,合适下载服务器,默认关闭
tcp_nopush on; #在一个数据包里发送所有头文件,而不一个接一个的发送。防止网络阻塞
tcp_nodelay on; #不缓存数据,而是一段一段的发送。当需要及时发送数据时,就应该给应用设置这个属性,这样发送一小块数据信息时就不能立即得到返回值。防止网络阻塞
keepalive_timeout 120; #长连接超时时间,单位是秒 client_header_buffer_size 32k; #客户请求头缓冲大小
large_client_header_buffers 4 64k; #nginx默认会用 client_header_buffer_size 这个buffer来读取header值,如果header过大,它会使用 large_client_header_buffers 来读取
client_max_body_size 8m; #指定允许客户端连接的最大请求实体大小,它出现在请求头部的Content-Length字段 open_file_cache max=1000 inactive=20s; #缓存是否启用,如果启用,将记录文件以下信息: 打开的文件描述符、大小信息、修改时间、存在的目录信息、在搜索文件过程中的错误信息,max指定缓存的最大数目,如果缓存溢出,最长使用过的文件(LRU)将被移除
open_file_cache_errors on; #是否在搜索一个文件是记录cache错误,默认值: off
open_file_cache_min_uses 2; #在open_file_cache指令无效的参数中一定的时间范围内可以使用的最小文件数,如果使用更大的值,文件描述符在cache中总是打开状态,默认值:1
open_file_cache_valid 30s; #何时需要检查open_file_cache中缓存项目的有效信息。默认值:60s #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k; #gzip模块设置
gzip on; #开启gzip压缩输出
gzip_static on; #nginx对于静态文件的处理模块,该模块可以读取预先压缩的gz文件,这样可以减少每次请求进行gzip压缩的CPU资源消耗。该模块启用后,nginx首先检查是否存在请求静态文件的gz结尾的文件,如果有则直接返回该gz文件内容。为了要兼容不支持gzip的浏览器,启用gzip_static模块就必须同时保留原始静态文件和gz文件。这样的话,在有大量静态文件的情况下,将会大大增加磁盘空间。我们可以利用nginx的反向代理功能实现只保留gz文件。
gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #禁用IE6的gzip压缩,IE6的某些版本对gzip的压缩支持很不好,会造成页面的假死
gzip_min_length 1k; #设置允许压缩的页面最小字节,页面字节数从header头的Content-Length中获取,默认值是0,不管页面多大都进行压缩。建议设置成大于1K。如果小于1K可能越压越大
gzip_buffers 4 16k; #压缩缓冲区,设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存 。如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果
gzip_comp_level 4; #压缩级别 1-9,默认值:1(建议选择为4),级别越高压缩率越大,当然压缩时间也就越长(传输快但比较消耗cpu)
gzip_types text/xml text/css application/javascript; #压缩类型,匹配MIME类型进行压缩,设置哪压缩种文本文件可参考 conf/mime.types,(无论是否指定)text/html默认已经压缩,默认不对js/css文件进行压缩,不能用通配符 text/*
gzip_proxied off; #作为反向代理的时候启用,开启或者关闭后端服务器返回的结果,匹配的前提是后端服务器必须要返回包含"Via"的 header头。
#默认值:off [off|expired|no-cache|no-store|private|no_last_modified|no_etag|auth|any]
#off - 关闭所有的代理结果数据的压缩
#expired - 启用压缩,如果header头中包含 "Expires" 头信息
#no-cache - 启用压缩,如果header头中包含 "Cache-Control:no-cache" 头信息
#no-store - 启用压缩,如果header头中包含 "Cache-Control:no-store" 头信息
#private - 启用压缩,如果header头中包含 "Cache-Control:private" 头信息
#no_last_modified - 启用压缩,如果header头中不包含 "Last-Modified" 头信息
#no_etag - 启用压缩 ,如果header头中不包含 "ETag" 头信息
#auth - 启用压缩 , 如果header头中包含 "Authorization" 头信息
#any - 无条件启用压缩
gzip_vary on; #和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用 #upstream的负载均衡
upstream luyucheng {
ip_hash; #每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题 server 192.168.80.1:80 weight=1; #weigth参数表示权重,权重越高被分配到的几率越大
server 192.168.80.2:80 down; #down表示当前的server暂时不参与负载
server 192.168.80.3:80 backup; #当所有的非备机(non-backup)都宕机(down)或者繁忙(busy)的时候,就只使用由 backup 标注的备机。必须要注意的是,backup 不能和 ip_hash 关键字一起使用
server 192.168.80.4:80 max_fails=3 fail_timeout=30s; #最大的重试次数,和重试时间间隔。最大失败次数为3,也就是最多进行3次尝试,且超时时间为30秒。max_fails的默认值为 1,fail_timeout的默认值是 10s。传输失败的情形,由proxy_next_upstream或fastcgi_next_upstream指定。而且可以使用proxy_connect_timeout和proxy_read_timeout控制upstream 响应时间。upstream中只有一个server时,max_fails和fail_timeout参数可能不会起作用 fair; #按后端服务器的响应时间来分配请求,响应时间短的优先分配 hash $request_uri; #按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。注意:在upstream中加入hash语句,server语句中不能写入weight等其他的参数
hash_method crc32; #使用的hash算法
} #虚拟主机的配置
server {
listen 80;
server_name luyucheng.cnblogs.com cnblogs.com; #域名可以有多个,用空格隔开
index index.html index.htm index.php;
root /www/cnblogs; #日志格式设定
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for'; access_log /var/log/nginx/access.log access; #定义本虚拟主机的访问日志 #定义错误提示页面
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /root;
} #对 "/yum" 启用反向代理
location /yum {
proxy_pass http://luyucheng
proxy_redirect http://luyucheng.cnblogs.com/yum http://luyucheng.cnblogs.com/yum/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP #以下是一些反向代理的配置
proxy_set_header Host $host;
client_max_body_size 10m; #允许客户端请求的最大单文件字节数
client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数
proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffers 4 32k;#proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传
} #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置.
location ~ \.php$ {
root /root;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} #设定查看Nginx状态的地址
location /NginxStatus {
stub_status on;
access_log off;
} #HTTP Auth Basic模块,该模块采用基于HTTP基本身份验证的用户名和密码登录方式,来保护你的虚拟主机或目录
location /NginxAuth{
auth_basic "NginxAuth"; #用于指定弹出的用户名和密码登录框中提示的名称
auth_basic_user_file conf/htpasswd; #用于设置htpasswd密码文件,htpasswd文件的内容可以用apache提供的htpasswd工具来产生
} #所有静态文件由nginx直接读取
location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { #缓存时间设置
expires 15d; #d(天) h(时) m(分) s(秒)
} #图片防盗链
location ~* \.(gif|jpg|png)$ { #表示对gif、jpg、png后缀的文件实行防盗链
valid_referers none blocked luyucheng.cnblogs.com *.cnblogs.com; #表示对url来源进行判断,允许文件链出的域名白名单, cnblogs.com这个指的是子域名,域名与域名之间使用空格隔开
if ($invalid_referer) {
rewrite ^/ http://www.cnblogs.com/404.jpg; #如果不是指定来源就跳转到http://www.cnblogs.com/404.jpg页面,当然直接返回403也是可以的。
#return 403;
}
} #禁止访问 .htxxx 文件
location ~ /\.ht {
deny all;
}
}
}

Nginx配置文件解析的更多相关文章

  1. nginx配置文件解析工具

    最近花了一些时间自己实现解析nginx配置文件的功能,这里有个工具先记下以后用. https://github.com/nginxinc/crossplane

  2. nginx 配置文件解析(一)

    nginx.conf user nginx; # nginx服务的运行用户 worker_processes ; # 启动进程数,通常设置成和CPU的数量相等 error_log /var/log/n ...

  3. Nginx 配置文件解析

    nginx 整理 nginx 配置主要是分为4个部分 1.main 全局设置2.server 主机设置 -- 指定主机与端口3.upstream 负载均衡服务器设置 -- 反向代理设置:4.locat ...

  4. Nginx安装部署以及配置文件解析

    Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令.Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的”/uri/”,可以是字符串或 ...

  5. Nginx安装与配置文件解析

    导读 Nginx是一款开放源代码的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3代理服务,是一款自由的软件,同时也是运维工程师必会的一种服务器,下面我就简单的说一下Nginx服务器的 ...

  6. nginx源代码分析--配置文件解析

    ngx-conf-parsing 对 Nginx 配置文件的一些认识: 配置指令具有作用域,分为全局作用域和使用 {} 创建其他作用域. 同一作用域的不同的配置指令没有先后顺序:同一作用域能否使用同样 ...

  7. Nginx入门篇(二)之Nginx部署与配置文件解析

    一.Nginx编译安装 ()查看系统环境 [root@localhost tools]# cat /etc/redhat-release CentOS Linux release (Core) [ro ...

  8. Centos7 nginx的目录结构与nginx主配置文件解析

    一.nginx的目录结构 [root@node nginx_116]# ls client_body_temp  conf  fastcgi_temp  html  logs  proxy_temp ...

  9. Nginx配置文件及模块解析

    一.Nginx是什么? Nginx是一个基于c语言开发的高性能http服务器及反向代理服务器.由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu.内 ...

随机推荐

  1. MVC中RenderBody的工作原理

    A)什么是RenderBody  根据MSDN的解释(http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US& ...

  2. 可变参数列表与printf()函数的实现

    问题 当我们刚开始学习C语言的时候,就接触到printf()函数,可是当时"道行"不深或许不够细心留意,又或者我们理所当然地认为库函数规定这样就是这样,没有发现这个函数与普通的函数 ...

  3. 【校验】TCP和UDP的校验和

    一开始,私以为校验和只是简单的求和得到的结果,后来在TCP和UDP里面看到使用的校验和方式有点奇怪--二进制反码(循环进位)求和. 人类的认知过程必将从简单到复杂,看下这个二进制反码循环求和是啥子意思 ...

  4. Linux SHELL 命令入门题目答案(一)

    1.如何使用shell 打印 “Hello World!” (1)如果你希望打印 !,那就不要将其放入双引号中,或者你可以通过转义字符转义(2)echo 'hello world!' 使用单引号ech ...

  5. Spark Application的调度算法

    要想明白spark application调度机制,需要回答一下几个问题: 1.谁来调度? 2.为谁调度? 3.调度什么? 3.何时调度? 4.调度算法 前四个问题可以用如下一句话里来回答:每当集群资 ...

  6. CSS Tip

    硬件加速 CSS will-change 属性

  7. C# base64 Img 互转

    [AcceptVerbs(HttpVerbs.Post)] public JsonResult Upload(HttpPostedFileBase fileData) { try { if (file ...

  8. C语言与java 20155317 王新玮第二次

    20155317 王新玮第二次写作感想   你有什么技能比大多数人(超过90%以上)更好? 刚刚看到这个题目,我的首先想到的是会一些中医,懂得中医的理论框架知识,懂得大部分的中医脉象,能够解决日常生活 ...

  9. python,django安装

    环境:win7 64位 软件:python3.4.3,jdango1.8,PyDev,pymysql0.7 一:安装python 1.安装好python好后,配置环境变量,可以参考其它的博客,本博客只 ...

  10. PHP中include()与require()的区别说明

    require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require ...