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

[经验分享] nginx 整理二

[复制链接]

尚未签到

发表于 2018-11-15 13:38:21 | 显示全部楼层 |阅读模式
  Nginx 监控
首先我们定义了一个 location ~  ^/NginxStatus/,这样通过 http://localhost/NginxStatus/ 就可以监控到 Nginx  的运行信息,显示的内容如下:Active connections: 70  server accepts handled requests
  14553819 14553819 19239266
  Reading: 0 Writing: 3 Waiting: 67
  NginxStatus 显示的内容意思如下: active connections – 当前 Nginx 正处理的活动连接数。
  server accepts  handled requests -- 总共处理了 14553819 个连接 , 成功创建 14553819 次握手 ( 证明中间没有失败的  ), 总共处理了 19239266 个请求 ( 平均每次握手处理了 1.3 个数据请求 )。
  reading -- nginx 读取到客户端的 Header 信息数。
  writing -- nginx 返回给客户端的 Header 信息数。
  waiting -- 开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
通过命令查看#netstat -n | awk "/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}"  TIME_WAIT 17
  ESTABLISHED 3254
  LAST_ACK 236
  FIN_WAIT_1 648
  FIN_WAIT_2 581
  CLOSING 7
  CLOSE_WAIT 4916
  解析:
  CLOSED  //无连接是活动的或正在进行
  LISTEN  //服务器在等待进入呼叫
  SYN_RECV  //一个连接请求已经到达,等待确认
  SYN_SENT  //应用已经开始,打开一个连接
  ESTABLISHED  //正常数据传输状态/当前并发连接数
  FIN_WAIT1  //应用说它已经完成
  FIN_WAIT2  //另一边已同意释放
  ITMED_WAIT  //等待所有分组死掉
  CLOSING  //两边同时尝试关闭
  TIME_WAIT  //另一边已初始化一个释放
  LAST_ACK  //等待所有分组死掉
  、Nginx 本身只是一个 HTTP 和反向代理服务器,它无法像 Apache 一样通过安装各种模块来支持不同的页面脚本,例如 PHP、CGI 等;
  3、Nginx 支持简单的负载均衡和容错;
  4、支持作为基本 HTTP 服务器的功能,例如日志、压缩、Byte ranges、Chunked responses、SSL、虚拟主机等等,应有尽有。
  为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions)包
配置 Nginx先来看一个实际的配置文件: user  nobody;# 工作进程的属主  worker_processes  4;# 工作进程数,一般与 CPU 核数等同
#error_log  logs/error.log;  #error_log  logs/error.log  notice;
  #error_log  logs/error.log  info;
#pid        logs/nginx.pid; events {  use epoll;#Linux 下性能最好的 event 模式
  worker_connections  2048;# 每个工作进程允许最大的同时连接数
  }
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  off;  access_log  logs/access.log;# 日志文件名
sendfile        on;  #tcp_nopush     on;
  tcp_nodelay     on;
keepalive_timeout  65;    include   gzip.conf;  # 集群中的所有后台服务器的配置信息
  upstream tomcats {
  server 192.168.0.11:8080 weight=10;
  server 192.168.0.11:8081 weight=10;
  server 192.168.0.12:8080 weight=10;
  server 192.168.0.12:8081 weight=10;
  server 192.168.0.13:8080 weight=10;
  server 192.168.0.13:8081 weight=10;
  }
server {  listen       80;#HTTP 的端口
  server_name  localhost;
charset utf-8;        #access_log  logs/host.access.log  main;  location ~ ^/NginxStatus/ {  stub_status on; #Nginx 状态监控配置
  access_log off;
  }
location ~ ^/(WEB-INF)/ {  deny all;
  }
location ~ \.(htm|html|asp|php|gif|jpg|jpeg|png|bmp|ico|rar|css|js|  zip|java|jar|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)$ {
  root /opt/webapp;
  expires 24h;
  }
location / {  proxy_pass http://tomcats;# 反向代理
  include proxy.conf;
  }
error_page 404 /html/404.html;        # redirect server error pages to the static page /50x.html  #
  error_page 502 503 /html/502.html;
  error_page 500 504 /50x.html;
  location = /50x.html {
  root   html;
  }
  }
  }
静态文件处理通过正则表达式,我们可让 Nginx 识别出各种静态文件,例如 images 路径下的所有请求可以写为:location ~ ^/images/ {  root /opt/webapp/images;
  }
  而下面的配置则定义了几种文件类型的请求处理方式。
location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|ico|css|js|txt)$ {  root /opt/webapp;
  expires 24h;
  }
对于例如图片、静态 HTML 文件、js 脚本文件和 css 样式文件等,我们希望 Nginx  直接处理并返回给浏览器,这样可以大大的加快网页浏览时的速度。因此对于这类文件我们需要通过 root  指令来指定文件的存放路径,同时因为这类文件并不常修改,通过 expires 指令来控制其在浏览器的缓存,以减少不必要的请求。 expires  指令可以控制 HTTP 应答中的“ Expires ”和“ Cache-Control  ”的头标(起到控制页面缓存的作用)。您可以使用例如以下的格式来书写 Expires:expires 1 January, 1970, 00:00:01 GMT;  expires 60s;
  expires 30m;
  expires 24h;
  expires 1d;
  expires max;
  expires off;
  动态页面请求处理
Nginx 本身并不支持现在流行的 JSP、ASP、PHP、PERL  等动态页面,但是它可以通过反向代理将请求发送到后端的服务器,例如 Tomcat、Apache、IIS  等来完成动态页面的请求处理。前面的配置示例中,我们首先定义了由 Nginx 直接处理的一些静态文件请求后,其他所有的请求通过  proxy_pass 指令传送给后端的服务器(在上述例子中是 Tomcat)。最简单的 proxy_pass 用法如下:location / {  proxy_pass        http://localhost:8080;
  proxy_set_header  X-Real-IP  $remote_addr;
  }
  这里我们没有使用到集群,而是将请求直接送到运行在 8080 端口的 Tomcat 服务上来完成类似 JSP 和 Servlet 的请求处理。
当页面的访问量非常大的时候,往往需要多个应用服务器来共同承担动态页面的执行操作,这时我们就需要使用集群的架构。 Nginx  通过 upstream 指令来定义一个服务器的集群,最前面那个完整的例子中我们定义了一个名为 tomcats  的集群,这个集群中包括了三台服务器共 6 个 Tomcat 服务。而 proxy_pass 指令的写法变成了:location / {  proxy_pass        http://tomcats;
  proxy_set_header  X-Real-IP  $remote_addr;
  }
  在 Nginx 的集群配置中,Nginx 使用最简单的平均分配规则给集群中的每个节点分配请求。一旦某个节点失效时,或者重新起效时,Nginx 都会非常及时的处理状态的变化,以保证不会影响到用户的访问。
总结尽管整个程序包只有五百多 K,但麻雀虽小、五脏俱全。 Nginx  官方提供的各种功能模块应有尽有,结合这些模块可以完整各种各样的配置要求,例如:压缩、防盗链、集群、FastCGI、流媒体服务器、 Memcached 支持、URL 重写等等,更关键的是 Nginx 拥有 Apache 和其他 HTTP  服务器无法比拟的高性能。您甚至可以在不改变原有网站的架构上,通过在前端引入 Nginx 来提升网站的访问速度。引自:  http://www.cosdiv.com/page/M0/S445/445285.html

运维网声明 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-635475-1-1.html 上篇帖子: 编译nginx SRPM 下篇帖子: nginx一角
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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