设为首页 收藏本站
查看: 1446|回复: 0

[经验分享] nginx主配置文件解释

[复制链接]

尚未签到

发表于 2018-11-16 12:50:31 | 显示全部楼层 |阅读模式
  Tengine 主配置文件
  Tengine 安装
  tar zxvf tengine-2.0.3.tar.gz
  cd tengine-2.0.3/
  ./configure --prefix=/data/ops/app/tengine-2.0.3/ --with-http_stub_status_module --with-pcre --with-http_upstream_check_module
  make && make install
  echo "/data/ops/app/tengine-2.0.3/sbin/nginx" >> /etc/rc.local
  部分模块说明:
  --with-http_upstream_check_module
  该模块可以为Tengine提供主动式后端服务器健康检查的功能。
  该模块在Tengine-1.4.0版本以前没有默认开启,它可以在配置编译选项的时候开启:./configure --with-http_upstream_check_module
  --with-pcre
  设置PCRE库的源码路径
  二、nginx配置文件
  配置文件分为几块儿
  nginx.conf 为主配置文件
  user root root;//设置worker进程的用户名和组名为root
  worker_processes  auto;//根据cpu数量自动设定Tengine的worker进程数量
  worker_rlimit_nofile 65535;//设置打开的文件句柄最大数量为65535。这个参数跟系统的ulimit有关
  events {
  ###如果你在./configure的时候指定了不止一个事件模型,你可以通过这个参数告诉nginx你想使用哪一个事件模型,默认情况下nginx在编译时会检查最适合你系统的事件模型。
  ###你可以在这里看到所有可用的事件模型并且如果在./configure时激活它们。
  use epoll;
  worker_connections  65535;
  //设定事件模型使用epoll,每个worker进程可用的最大连接数是65535。
  //为什么nginx比apache快,epoll起到了比较关键的作用。
  }
  http {
  ###文件扩展名与文件类型映射表
  include       mime.types;
  ###默认文件类型
  default_type  application/octet-stream;
  #隐藏版本号
  server_tokens           off;
  server_info             off;
  ###这个参数指定了是否记录客户端的请求出现404错误的日志,通常用于不存在的robots.txt和favicon.ico文件
  log_not_found           off;
  log_format      main    '$host$server_addr$server_port$remote_addr$time_iso8601$request_method$uri$args'
  '$server_protocol$status$body_bytes_sent$bytes_sent'
  '$request_time$http_referer$http_user_agent$http_x_forwarded_for'
  '$upstream_addr$upstream_status$upstream_response_time$upstream_cache_status';
  log_format      mainandpost     '$host$server_addr$server_port$remote_addr$time_iso8601$request_method$uri$args'
  '$request_body$server_protocol$status$body_bytes_sent$bytes_sent'
  '$request_time$http_referer$http_user_agent$http_x_forwarded_for'
  '$upstream_addr$upstream_status$upstream_response_time$upstream_cache_status';
  access_log logs/access-$year-$month-$day.log main;
  open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
  sendfile        on;//打开会使用sendfile系统调用,用来发送静态文件,节省了文件在用户空间和内核空间拷贝的消耗。
  tcp_nopush      on;//打开后,会使TCP在发送数据时进行缓存,提高传输效率,但是会增加客户端响应时间。
  request_time_cache off;
  req_status_zone req_status_zone "$host" 10M;//创建统计使用的共享内存。zone_name是共享内存的名称,value用于定义key,支持变量。size是共享内存的大小。
  include proxy_cache_path.conf;
  include upstream.conf;
  include vhost.*.conf;
  }
  其他例如upstream,vhost 等都通过include去引用
  日志格式分隔符一般用crtl+v+a作为分隔符,这样为了以后方便对日志作分析
  '$host//“Host”请求头的值,如果没有该请求头,则为与请求对应的虚拟主机的首要主机名。
  $server_addr//接受请求的服务器地址。
  为计算这个值,通常需要进行一次系统调用。为了避免系统调用,必须指定listen指令 的地址,并且使用bind参数。
  $server_port//接受请求的虚拟主机的端口。
  $remote_addr//客户端IP地址。
  $time_iso8601//ISO8601标准格式下的本地时间
  $request_method//HTTP方法,通常为“GET”或者“POST”。
  $uri//当前请求规范化以后的URI。
  变量$uri的值可能随请求的处理过程而改变。 比如,当进行内部跳转时,或者使用默认页文件。
  $args//请求行中参数字符串
  '$request_body//请求正文。
  $server_protocol//请求协议,通常为“HTTP/1.0”或“HTTP/1.1”。
  $status//响应状态
  $body_bytes_sent//发送给客户端的字节数,不包括响应头的大小
  $bytes_sent//发送给客户端的总字节数
  '$request_time//请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
  $http_referer//记录从哪个页面链接访问过来的
  $http_user_agent//记录客户端浏览器相关信息
  $http_x_forwarded_for//记录客户端IP地址
  $upstream_addr//保存服务器的IP地址和端口或者是UNIX域套接字的路径
  $upstream_status//保存服务器的响应代码。 出现多个响应时,也是以逗号和冒号隔开。
  $upstream_response_time//以毫秒的精度保留服务器的响应时间,(输出)单位是秒。 出现多个响应时,也是以逗号和冒号隔开。
  $upstream_cache_status//前端代理和后端服务器响应状态
  ###如果需要修改从被代理服务器传来的应答头中的"Location"和"Refresh"字段,可以用这个指令设置。
  proxy_redirect off;
  ###防止在客户端自己终端请求的情况下中断代理请求。
  proxy_ignore_client_abort  on;#禁止服务器主动拒绝客户端
  proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
  ###允许重新定义或者添加发往后端服务器的请求头。value可以包含文本、变量或者它们的组合。
  ###当且仅当当前配置级别中没有定义proxy_set_header指令时,会从上面的级别继承配置。 默认情况下,只有两个请求头会被重新定义:
  proxy_set_header Host $host:$server_port; #传递host头+端口号给后端
  ###将$remote_addr变量值添加在客户端“X-Forwarded-For”请求头的后面,并以逗号分隔。
  ###如果客户端请求未携带“X-Forwarded-For”请求头,$proxy_add_x_forwarded_for变量值将与$remote_addr变量相同。
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Host $server_name;
  proxy_set_header X-Real-IP $remote_addr; #传递客户端源地址
  proxy_set_header Client-Real-IP $remote_addr;
  proxy_set_header                        Accept-Encoding '';#强制关闭后端gzip
  ###设置从被代理服务器读取的第一部分应答的缓冲区大小。
  ###通常情况下这部分应答中包含一个小的应答头。
  ###默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小。
  proxy_buffer_size       32k;
  ###设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k。
  proxy_buffers           4 32k;
  ###当开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,
  ###直到缓冲小于此值。这条指令用来设置此值。 同时,剩余的缓冲区可以用于接收响应,如果需要,一部分内容将缓冲到临时文件。
  ###该大小默认是proxy_buffer_size和proxy_buffers指令设置单块缓冲大小的两倍。
  proxy_busy_buffers_size 64k;
  ###设置在写入proxy_temp_path时数据的大小,在预防一个工作进程在传递文件时阻塞太长。
  proxy_temp_file_write_size      64k;
  client_max_body_size     100m;
  proxy_http_version 1.1;
  proxy_set_header Connection "";
  语法:
  proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_404 | off ...;
  默认值:
  proxy_next_upstream error timeout;
  上下文:
  http, server, location
  指定在何种情况下一个失败的请求应该被发送到下一台后端服务器:
  error
  和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现错误;
  timeout
  和后端服务器建立连接时,或者向后端服务器发送请求时,或者从后端服务器接收响应头时,出现超时;
  invalid_header
  后端服务器返回空响应或者非法响应头;
  http_500
  后端服务器返回的响应状态码为500;
  http_502
  后端服务器返回的响应状态码为502;
  http_503
  后端服务器返回的响应状态码为503;
  http_504
  后端服务器返回的响应状态码为504;
  http_404
  后端服务器返回的响应状态码为404;
  off
  停止将请求发送给下一台后端服务器。
  需要理解一点的是,只有在没有向客户端发送任何数据以前,将请求转给下一台后端服务器才是可行的。也就是说,如果在传输响应到客户端时出现错误或者超时,这类错误是不可能恢复的。
  语法:
  proxy_buffer_size size;
  默认值:
  proxy_buffer_size 4k|8k;
  上下文:
  http, server, location
  设置缓冲区的大小为size。nginx从被代理的服务器读取响应时,使用该缓冲区保存响应的开始部分。这部分通常包含着一个小小的响应头。该缓冲区大小默认等于proxy_buffers指令设置的一块缓冲区的大小,但它也可以被设置得更小。
  语法:
  proxy_buffers number size;
  默认值:
  proxy_buffers 8 4k|8k;
  上下文:
  http, server, location
  为每个连接设置缓冲区的数量为number,每块缓冲区的大小为size。这些缓冲区用于保存从被代理的服务器读取的响应。每块缓冲区默认等于一个内存页的大小。这个值是4K还是8K,取决于平台。
  语法:
  proxy_busy_buffers_size size;
  默认值:
  proxy_busy_buffers_size 8k|16k;
  上下文:
  http, server, location
  当开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定大小时,nginx一定会向客户端发送响应,直到缓冲小于此值。这条指令用来设置此值。 同时,剩余的缓冲区可以用于接收响应,如果需要,一部分内容将缓冲到临时文件。该大小默认是proxy_buffer_size和proxy_buffers指令设置单块缓冲大小的两倍。
  语法:
  proxy_temp_file_write_size size;
  默认值:
  proxy_temp_file_write_size 8k|16k;
  上下文:
  http, server, location
  在开启缓冲后端服务器响应到临时文件的功能后,设置nginx每次写数据到临时文件的size(大小)限制。 size的默认值是proxy_buffer_size指令和proxy_buffers指令定义的每块缓冲区大小的两倍, 而临时文件最大容量由proxy_max_temp_file_size指令设置。
  $proxy_add_x_forwarded_for
  将$remote_addr变量值添加在客户端“X-Forwarded-For”请求头的后面,并以逗号分隔。 如果客户端请求未携带“X-Forwarded-For”请求头,$proxy_add_x_forwarded_for变量值将与$remote_addr变量相同。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-635818-1-1.html 上篇帖子: F5和nginx配合转发前端请求 下篇帖子: 编译安装Nginx1.6.2+MySQL5.6.21+PHP5.6.3
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表