Nginx之——配置文件解析

主配置文件(nginx.conf):

user nginx nginx; #运行用户

worker_processes 8; #启动进程数,一般等于CPU的总核数或两倍,太多会占用CPU增高。

error_log /tol/app/nginx/logs/nginx_error.log crit; #定义错误日志文件及级别,有 [debug|info|notice|warn|error|crit]

pid /tol/app/nginx/logs/nginx.pid; #定义PID文件

worker_rlimit_nofile 51200; #和系统的单进程打开文件数一致,使用ulimit -SHn 65534 设置

events{

use epoll; #工作模式,有 [kqueue|rtsig|epoll|/dev/poll|select|poll]

worker_connections 51200; #单进程最大连接数,程序最大连接数=worker_connections*worker_processes

}

http{

include       mime.types; #文件扩展名与文件类型映射表

default_type application/octet-stream; #设置默认类型是二进制流,当类型未定义时使用二进制流的方式。比如未加装PHP时,是不予解析,用浏览器访问则出现下载窗口

server_names_hash_bucket_size 128; #服务器名字的hash表大小,不能带单位

client_header_buffer_size 128k; #客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小

large_client_header_buffers 4 128k; #客户请求头缓冲大小,4为个数,128k为大小,申请4个128k。nginx默认会用client_header_buffer_size这个buffer来读取header值.

如果header过大,它会使用large_client_header_buffers来读取.

如果设置过小HTTP头/Cookie过大 会报400 错误nginx 400 bad request.

如果超过buffer,就会报HTTP 414错误(URI Too Long).

nginx接受最长的HTTP头部大小必须比其中一个buffer大,否则就会报400的HTTP错误(Bad Request)。

client_max_body_size 8m; #允许客户端请求的最大单个文件字节数(nginx上传文件的大小),若超出此值,报413 Request Entity Too Large

client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,可以理解为先保存到本地再传给用户,如果把它设置为比较大的数值,例如256k,那么,无论使用firefox还是IE浏览器,来提交任意小于256k的图片,都很正常。如果注释该指令,使用默认的client_body_buffer_size设置,也就是操作系统页面大小的两倍,8k或者16k,问题就出现了。无论使用firefox4.0还是IE8.0,提交一个比较大,200k左右的图片,都返回500 Internal Server Error错误

sendfile on; #打开系统函数sendfile()支持,开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。

注意:如果图片显示不正常把这个改成off。

tcp_nopush     on; #此选项允许或禁止使用socke的TCP_CORK的选项,此选项仅在使用sendfile的时候使用。参考:http://blog.csdn.net/zmj_88888888/article/details/9169227

也就是说tcp_nopush on 会设置调用tcp_cork方法。

这个也是默认的,结果就是数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞

keepalive_timeout 60; #长连接超时时间,单位是秒

tcp_nodelay on; #为了发送小数据,比如10B以下的数据,会封装一个带有40B的IP包。如果每次都将这些小数据封装成IP包,很容易造成网络拥塞,所以就可以设置是将多个小数据封装成一个包(tcp_nodelay off)还是封装这些小数据成一个包(tcp_nodelay on)。tcp_nodelay和tcp_nopush是互斥的。不过如果你同时设置了两个值的话,将会在第一个buf发送的时候,强制push数据,而第二个buf时,将会调用tcp_cork来打开nagle算法,也就是后面的都会应用tcp_nopush.

参考:http://www.pagefault.info/?p=228

#以上四项可以提高文件传输性能

server_tokens off; #关闭报错时的Nginx版本显示

gzip on; #开启gzip压缩输出

gzip_min_length 1k; #从Content-Length中数值获取验证,小于1K会越压越大

gzip_buffers     4 16k; #以16K为单位4倍的申请内存做压缩结果流缓存,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。

gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)

gzip_comp_level 2; #压缩比率1-9,1压缩比最小处理速度最快,9压缩比最大但处理最慢且耗CPU

gzip_types       text/plain application/x-javascript text/css application/xml; #压缩类型,无论是否指定text/html总是会压缩

gzip_vary on; #此选项可让前端的缓存服务,如squid缓存经过nginx压缩的数据

#limit_zone connlimit $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用,定义名为connlimit的并发连接数限制空间,存储10M的带有二进制IP的会话信息,每个会话信息是32bytes,10M应该可以记录320000个会话。配合limit_conn 使用。

log_format access ‘$remote_addr - $remote_user [$time_local] "$request" ‘ ‘$status $body_bytes_sent "$http_referer" ‘ ‘ "$http_user_agent" $http_x_forwarded_for‘;

#$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;

$remote_user:用来记录客户端用户名称;

$time_local: 用来记录访问时间与时区;

$request: 用来记录请求的url与http协议;

$status: 用来记录请求状态;成功是200,

$body_bytes_s ent :记录发送给客户端文件主体内容大小;

$http_referer:用来记录从那个页面链接访问过来的;

$http_user_agent:记录客户浏览器的相关信息;

通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。

反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址;

access_log off; #关闭访问日志

include /tol/app/nginx/conf/vhost/*.conf; #加载其他的配置文件

}

虚拟主机配置文件:

upstream zhuanti { #设定负载均衡的服务器列表,名称为zhuanti

server 127.0.0.1:8040;

}

server {

listen 80;

server_name zhuanti.test.com;

root /tol/htdocs/zhuanti/ROOT;

index index.html index.jsp index.htm;

#limit_conn connlimit 20; #限制一个IP只能最多只能发起20个连接,超过报 503 Service unavailable,与主配置文件里配置的名称对应。

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ {

expires      1h; #缓存到客户端的浏览器一个小时

}

location / {

#autoindex on; 开启自动索引功能,一般用于可以下载文件的服务器

#autoindex_exact_size on|off; 设定索引时文件大小的单位,默认为on,单位是bytes,设为off时单位(B、KB、MB、GB)

#autoindex_localtime on|off; 开启以本地时间来显示文件时间的功能

if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|bingbot|360Spider") { #$http_user_agent 匹配客户端agent信息

proxy_pass http://ask2;

}

proxy_pass      http://zhuanti/;

proxy_redirect             off;

#proxy_next_upstream  http_502 http_504 error timeout invalid_header; #如果后端服务器返回502、504、超时等错误自动将请求转发到upstream负载均衡池中的另一台服务器。

proxy_set_header           Host $host;

proxy_set_header           X-Real-IP $remote_addr;

proxy_set_header           X-Forwarded-For $proxy_add_x_forwarded_for; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

#以上三行,目的是将代理服务器收到的用户的信息传到真实服务器上

client_max_body_size       50m;

client_body_buffer_size    128k;

proxy_connect_timeout      120; #nginx跟后端服务器连接超时时间_发起握手等候响应超时时间

proxy_send_timeout         120; #后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据

proxy_read_timeout         120; #连接成功后_等候后端服务器响应时间_其实已经进入后端的排队之中等候处理(也可以说是后端服务器处理请求的时间)

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; #设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长

}

access_log /tol/app/nginx/logs/zhuanti.log access;

location /nginxstatus {

allow 127.0.0.1;

deny all;

stub_status on;

access_log   off;

}

}

Nginx之——配置文件解析

时间: 2024-11-13 08:46:41

Nginx之——配置文件解析的相关文章

nginx.conf配置文件解析(http、server、location proxy_pass)

nginx.conf配置文件解析(http.server.location) 标签: nginxnginx-conf 2017-04-26 20:10 1031人阅读 评论(0) 收藏 举报 分类: Nginx(8) 版权声明:本文为博主原创文章,未经博主允许不得转载. nginx.conf文件在安装目录/conf目录下 1.定义Nginx运行的用户和用户组 user nginx nginx; 2.nginx进程数,建议设置为等于CPU总核心数 worker_processes 1; 3.全局错

Nginx安装与配置文件解析

导读 Nginx是一款开放源代码的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3代理服务,是一款自由的软件,同时也是运维工程师必会的一种服务器,下面我就简单的说一下Nginx服务器的安装和文件解析. 简单安装 本教程一Centos 6.3为例讲解,软件包可以在官方网站下载,编译安装之前,我们需要使用YUM提前将所需的软件依赖包安装完成. 安装命令如下: [[email protected] ~]# wget http://nginx.org/download/nginx-1.4

Nginx的配置文件(nginx.conf)解析

步骤一:vi nginx.conf配置文件,参考本博文的最下面总结,自行去设置 最后nginx.conf内容为 步骤二:每次修改了nginx.conf配置文件后,都要reload下. index.html里写入如下内容 步骤三: 先来配一个路由映射 因为,我们的nginx.conf为 以上, 是基于域名的虚拟主机的nginx.conf配置.    当然,我们也可以基于端口的虚拟主机的nginx.conf配置 当然,我们也可以基于ip的虚拟主机的nginx.conf配置 当然,我们用完之后,你也可

Nginx、Apache解析php文件的区别

一.Apache是如何解析php文件的 我们常说的lamp架构是linux.apache.mysql.php,我们知道任何架构或者网站离不开数据库的支持,那么php和apache又是如何协同工作的呢? php是apache的一个外挂程序,必须依靠web服务器才可以运行.当客户端浏览器触发事件--->php程序提交到apache服务器---->apache服务器根据php程序的特点判断是php程序,并从内存或者硬盘中提取访问所需要的应用程序,将其提交给php引擎程序--->php引擎程序解

源码安装Nginx及配置文件详解

一.安装Nginx 二.Nginx编译选项 三.Nginx进程管理命令 四.Nginx配置文件解析 一.安装Nginx 1.提前安装所需软件依赖包 yum install -y gcc pcre pcre-devel openssl openssl-devel gd gd-devel perl perl-ExtUtils-Embed 2.下载Nginx源码安装包 wget http://nginx.org/download/nginx-1.4.0.tar.gz 3.解压编译(禁用模块使用参数--

01_Nginx安装,nginx下部署项目,nginx.conf配置文件修改,相关文件配置

?? 1.下载Nginx,进入Nginx下载地址:http://nginx.org/ 点击nginx-1.8.0,进入:http://nginx.org/en/download.html,下载文件: 2 下载pcre,这个是一个正则表达式的库,Nginx做rewriter的时候回用到这个库: 进入pcre的官网(rewrite模式需要pcre):http://www.pcre.org/ 选中右击复制所需要的版本: 3 下载zlib库(gzip模块需要zlib):http://www.zlib.n

转:Apache和Nginx运行原理解析

Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. 应用层使用HTTP协议. HTML文档格式. 浏览器统一资源定位器(URL). Web服务器常常以B/S(Browser/Server)方式提供服务.浏览器和服务器的交互方式如下: GET /index.php HTTP/1.1 +---------------+                   +----------------+  |               +------

[nginx源码解析]配置解析(main作用域)

下面我们就以一个简单配置(nginx默认配置文件)来进行分析整个配置解析过程,同时会附图 配置文件如下(nginx默认生成配置文件) worker_processes 1; daemon off; events { worker_connections 1024 ; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { list

Apache和Nginx运行原理解析

Web服务器 Web服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务. 应用层使用HTTP协议. HTML文档格式. 浏览器统一资源定位器(URL). Web服务器常常以B/S(Browser/Server)方式提供服务.浏览器和服务器的交互方式如下: GET /index.php HTTP/1.1 +---------------+                   +----------------+ |               +-------