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

[经验分享] 戏说Nginx(一)

[复制链接]

尚未签到

发表于 2018-11-10 12:29:38 | 显示全部楼层 |阅读模式
2.Nginx配置文件详解:  nginx的配置文件路径为/usr/local/nginx/conf,其中nginx.conf为Nginx的主配置文件。
  Nginx配置文件主要分成四个部分:main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)、location(URL匹配特定位置的设置)。main部分设置命令将影响其他所有设置;server部分的命令主要用于指定主机和端口;upstream命令主要用于负载均衡,设置一系列的后端服务器;location部分用于匹配网页位置。
  Nginx实例配置:
  user  nobody nobody;
  worker_processes  4;
  error_log  logs/error.log  notice;
  pid        logs/nginx.pid;
  worker_rlimit_nofile 65535;
  events {
  use epoll;
  worker_connections  65535;
  }
  user: 主模块命令,指定Nginx的worker进程运行用户以及用户组,默认由nobody账号运行。
  worker_processes: 指定Nginx要开启的进程数。
  error_log:  用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为详细,而crit输出日志最少。
  pid: 用来指定进程ID的存储文件位置。
  worker_rlimit_nofile: 用于绑定worker进程和CPU,Linux内核2.4以上可用。
  events: 设定Nginxd的工作模式及连接数上限。其中参数"use" 用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kequeue和epoll是高效的工作模式,对于Linux系统,epoll工作模式是首选。而参数"worker_connections"用于定Nginx每个进程的最大连接数,默认是1024。最大客户端连接数由worker_processes和worker_connections决定,即max_client = worker_processes* worker_connections。进程的最大连接数受Linx系统进程的最大打开文件数限制,在执行操作系统命令"ulimit -n 65535" 后 worker_connections的设置才能生效。
  http的属性配置:
  http {
  include       mime.types;
  default_type  application/octet-stream;
  log_format  main  '$remote_addr - $remote_user [$time_local]'
  '"$request"  $status $bytes_sent '
  '"$http_referer" "$http_user_agent"'
  '"$gzip_ratio"';
  log_format download ' $remote_addr - $remote_user [$time_local] '
  '"$request" $status $bytes_sent '
  '"$http_referer" "$http_user_agent" '
  '"$http_range" "$sent_http_content_range"';
  access_log  logs/access.log  main;
  client_max_body_size     20m;
  client_header_buffer_size    32k;
  large_client_header_buffers 4 128k;
  sendfile        on;
  tcp_nopush      on;
  tcp_nodelay     on;
  #keepalive_timeout  0;
  keepalive_timeout  60;
  client_header_timeout  10;
  client_body_timeout    10;
  send_timeout           10;
  参数说明:
  include: 主模块命令,实现对配置文件所包含文件的设定,可以减少主配置文件的复杂度。类似于Apache中的include方法。
  default_type: 属于HTTP核心模块命令,这里默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如,在没有配置PHP环境时,Nginx是不予解析的,此时,用浏览器访问PHP文件就会出现下载窗口。
  log_format: 用于指定Nginx日志的输出格式。main为此日志输出格式的名称,可以在下面的access_log命令中引用。
  client_max_body_size: 用来设置允许客户端请求的最大的单个文件字节数。
  client_header_buffer_size: 用于指定来自客户端请求头的headerbuffer大小。对于大多数请求,1KB的缓冲区大小已经足够,如果自定义了消息头或有更大的cookie,可以增加缓冲区大小。这里设置为32KB。
  large_client_header_buffers: 用来指定客户端请求中较大的消息头的缓存最大数量和大小,"4"为个数,"128K"为大小,最大缓存量为4个128KB。
  sendfile: 用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个命令设置为"on"用于防止网络阻塞。
  keepalive_timeout: 设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。
  client_header_timeout: 设置客户端请求头读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回"Request time out (408)"错误。
  client_body_timeout: 设置客户端请求主体读取超时时间。如果超过这个时间,客户端还没有发送任何数据,Nginx将返回"Request time out (408)"错误,默认值是60。
  send_timeout: 指定响应客户端的超时时间,这个超时仅限于两个连接活动之间的时间,如果超过这个时间,客户端没有任何活动,Nginx将会关闭连接。
  HTTPGzip模块配置:
  gzip  on;
  gzip_min_length 1k;
  gzip_buffers    4  16k;
  gzip_http_version  1.1;
  gzip_comp_level      2;
  gzip_types  text/plain application/x-javascript text/css application/xml;
  gzip_vary on;
  参数说明:
  gzip: 用于设置开启或关闭gzip模块,"gzip on"表示开启GZIP压缩,实时压缩输出数据流。
  gzip_min_length: 设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1KB的字节数,小于KB可能会越压缩越大。
  gzip_buffers: 表示申请4个单位为16KB的内存作为压缩结果流缓存,默认是申请与原始数据大小相同的内存空间来存储GZIP压缩结果。
  gzip_http_version: 用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
  gzip_comp_level: 用来指定GZIP压缩比,1表示压缩比最小,处理速度最快;9表示压缩比最大,传输速度快,但处理速度最慢,也比较消耗CPU资源。
  gzip_types: 用来指定压缩的类型,无论是否指定,"text/html"类型总是会被压缩的。
  gzip_vary: 让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。
  虚拟主机的配置:
  server {
  listen       80;
  server_name  10.0.0.35;
  index index.html index.htm index.jsp;
  root /web/wwwroot/www.ixdba.net;
  charset utf-8;
  access_log  logs/host.access.log  main;
  参数说明:
  建议:将虚拟主机进行配置的内容写进另一个文件,然后通过include命令包含进来,这样更便于维护和管理。
  server: 定义虚拟主机开始的关键字。
  listen: 用于指定虚拟主机的服务端口。
  server_name: 用来指定IP地址或域名,多个域名之间用空格分开。
  index: 用于设定访问的默认首页地址。
  root: 用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。
  charset: 用于设置网页的默认编码格式。
  access_log: 用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式。
  URL地址配置:
  location ~ .*\.(gif|jpg|jpeg|pen|bmp|swf)$ {
  root   /web/wwwroot/www.ixdba.net;
  expires  30d;
  }
  说明:
  URL地址匹配是Nginx配置中最灵活的部分。通过location关键字定义了地址匹配的开始。location支持正则表达式匹配,也支持条件判断匹配。用户可以通过location命令实现Nginx对动态、静态网页进行过滤处理。在上面这段location代码中,所有扩展名以.gif、.jpg、.jpeg、.png、.bmp、.swf结尾的静态文件都交给Nginx处理,而expires用来指定静态文件的过期时间,这里是30天。
  location ~ ^/(upload|html)/  {
  root   /web/wwwroot/www.ixdba.net;
  expires 30d;
  }
  说明:
  这段代码是将upload和html下所有文件都有交给Nginx来处理,当然,upload和html目录包含在/web/wwwroot/www.ixdba.net目录中。
  location ~ .*.jsp$ {
  index index.jsp;
  proxy_pass http://10.0.0.35:8080;
  }
  说明:
  这段代码中,通过location关键字实现了将所有以.jsp为后缀的文件都交给本机的8080端口处理。
  location /NginxStatus {
  stub_status        on;
  access_log         logs/NginxStatus.log;
  auth_basic         "NginxStatus";
  auth_basic_user_file   /usr/local/nginx/conf/htpasswd;
  }
  说明:
  这段代码配置的是Nginx的运行状态,StubStatus模块能够获取Nginx上次启动以来的工作状态。
  stub_status: 设置为"on"表示启用StubStatus的工作状态统计功能。
  access_log: 用来指定StubStatus模块的访问日志文件。
  auth_basic: 是Nginx的一种机制。
  auth_basic_user_file: 用来指定认证的密码文件。
  由于Nginx的auth_basic认证采用的是与Apache兼容的密码文件,因此需要用Apache的htpasswd命令来生成密码文件。
  安装htpasswd命令:
  我这里直接yum 安装httpd了。
  yum install -y httpd
  生成密码文件:
  这里添加了webadmin用户
  htpasswd -c /usr/local/nginx/conf/htpasswd webadmin
  提示信息:
  New password:
  在输入密码之后,系统会要求再次输入密码。确认密码正确之后成功添加用户。
  查看Nginx的运行状态:
  输入:http://ip/NginxStatus,然后输入刚刚创建的用户和密码。
  Active connections: 1
  server accepts handled requests
  13 13 22
  Reading: 0 Writing: 1 Waiting: 0
  其中,"Active connections"表示当前活跃的连接数,第三行的三个数字表示Nginx当前总共处理了13个连接,成功创建13次握手,总共处理了22个请求。最后一行的"Reading" 表示Nginx读取到客户端Header信息数,"writing"表示Nginx返回给客户端的Header信息数,"Waiting"表示Nginx已经处理完,正在等候下一次请求命令时的驻留连接数。
  虚拟主机的错误信息返回页面:
  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;
  }
  }
  }
  说明:
  通过error_page命令可以定制各种错误信息的返回页面。在默认情况下,Nginx会在主目录的html目录中查找指定的返回页面。
  3.Nginx日常维护:
  1.Nginx配置正确性检查:
  命令:
  /usr/local/nginx/sbin/nginx -t
  或:
  /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
  说明:
  其中,"-t"参数用于检查配置文件是否正确,但并不执行。“-c”参数用于指定配置文件路径,如果不指定配置文件路径,Nginx默认在安装时指定的安装目录下查找conf/nginx.conf文件。
  结果:
  nginx: the configuration file  /usr/local/nginx/conf/nginx.conf syntax is ok
  nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  2.查了ginx版本:
  命令:
  [root@nginx01 ~]# /usr/local/nginx/sbin/nginx -v
  nginx version: nginx/1.4.7
  3.查看Nginx安装版本和相关编译信息:
  命令:
  [root@nginx01 ~]# /usr/local/nginx/sbin/nginx -V
  nginx version: nginx/1.4.7
  built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
  configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_gzip_static_module
  4.Nginx的启动、关闭与重启:
  Nginx对进程的控制能力非常强大,可以通过信号命令控制进程。常用信号:
  QUIT,表示处理完关当前请求后关闭进程。
  HUP,表示重新加载配置,即关闭原有进程并开启新的工作进程。此操作不会中断用户的访问请求,因此,可以通过此信号平滑地重启Nginx。
  USR1,用于Nginx的日志切换,也就是重新打开一个日志文件,例如,每天要生成一个新的日志文件时,可以使用这个信号来控制。
  USR2,用于平滑升级可执行程序。
  WINCH,从容关闭工作进程。
  启动:
  /usr/local/nginx/sbin/nginx
  查看:
  ps -ef | grep nginx
  关闭:
  kill 14179
  获取进程号:
  ps -ef | grep "nginx: master process" | grep -v "grep"| awk '{print $2}'
  或
  cat /usr/local/nginx/logs/nginx.pid
  平滑重启:
  kill -HUP `cat /usr/local/nginx/logs/nginx.pid`


运维网声明 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.iyunv.com/thread-633245-1-1.html 上篇帖子: nginx介绍与安装 下篇帖子: Nginx(一)概述
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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