`
zhanghaj00
  • 浏览: 64371 次
社区版块
存档分类
最新评论

Nginx 进阶(不断学习更新中)

 
阅读更多
1.Nginx 作为一个 web 服务器, 只能做基于80端口或者mail 的 负载均衡是基于应用层的负载均衡,这一点LVS 就是一个专门的负载均衡软件没有针对什么端口,什么FTP啦,都可以
这个是文档里面找的

LVS负载调度器能够支持绝大多数的TCP和UDP协议:
协议内 容TCPHTTP,FTP,PROXY,SMTP,POP3,IMAP4,DNS,LDAP,HTTPS,SSMTP等UDPDNS,NTP,ICP,视频、音频流播放协议等无需对客户机和服务器作任何修改,可适用大多数Internet服务。
性能:LVS服务器集群系统具有良好的伸缩性,可支持几百万个并发连接。配置100M网卡,采用VS/TUN或VS/DR调度技术,集群系统的吞吐量可高达1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近10Gbits/s


2.Nginx 与 Apache 怎么说 Apache 这么长时间了,模块那是超级多,还有Nginx 是基于事件驱动的。而Apache是线程的。什么的什么的。这个我不明白。可能要多学点。反正知道的就是Nginx的并发处理非常不错。

3.突然想到,其实nginx 和这些web 服务器不冲突,可以nginx 做前端的负载均衡和反向代理,后端开启httpd 服务,共用一个db设备,比如Mysql 利用 Master/Slave 来做后端 ,呼呼 这算是一个架构么。。。其实都是空话。。。额。。

4nignx 的 features
1).keep-alive and pipeline
2).智能DNS
3).ip访问控制和基本的身份验证
            location /test {
                auth_basic "Restricted";
                auth_basic_user_file  /usr/local/test;
        }
4).流媒体 MP4/FLV
5).相应线程
6).支持perl

5.nginx 重写 rewrite 才用 PCRE的正则表达式的语法
if($http_usr_agent ~ MSIE){
   rewrite ^(.*)$/web1/$1 break
}

location ~ .*\.(sh|bash)?${
  return 403;
}

使用last会对server标签重新发起请求,而break就直接使用当前的location中的数据源来访问
在location / { 配置里:
1、使用root指定源:使用last和break都可以
2、使用proxy_pass指定源:使用last和break都可以
3、使用alias指定源:必须使用last
在location /a/或使用正则的location ~ ^/a/里:
1、使用root指定源:使用last和break都可以
2、使用proxy_pass指定源:使用break和last结果有所区别
3、使用alias指定源:必须使用last


6.nginx 对 fastcgi的支持



-----------------------------------

Nginx 指令大全 http://howtocn.org/nginx:directiveindex

-----------------------------------
扯了这么多。开始看看大神们对Nginx的解释 ,感觉茅塞顿开。。。。。



首先 我们ps -ef|grep nginx 发现nginx 是由一个master 和多个worker 来组成的,顾名思义,Master是管理那些worker的, master 会fork出worker ,有请求的时候,worker就会去接受那些请求,大神说nginx 有个 accept_mutex 参数 ,可以防止一个worker 接受成功,其他worker都接受失败的错误设定,对 就是对请求加共享锁,每个worker进程处理一个请求,进水不犯河水,这样 nignx 的 从容的重启就可以实现了,不会全盘杀掉,你跑你的,我重启我的,你跑完了 我再fork worker就行了,当然,在此期间,旧的worker肯定不能接受新的请求。

那这么多worker进程,请求多了来了也吃不消呀,哪里有说的 nignx处理高并发的特点。貌似apache就是每个请求都会有一个工作线程(多线程模式),然后纷纷多的线程一下来,然后就是各种alert邮件。在这里 nignx异步非阻塞版本,可以同时处理很多请求。

就像是具体到系统调用就是像select/poll/epoll/kqueue这样的系统调用,我们的请求最后就是事件驱动的,一个请求请求一个事件处理,enginx就是把事件放到epoll中,事件准备好了,我们就去读写,当读写返回EAGAIN时,我们将它再次加入到epoll里面。这样,只要有事件准备好了,我们就去处理它,只有当所有事件都没准备好时,才在epoll里面等着。这样,我们就可以并发处理大量的并发了,只是线程只有一个,所以处理就是在这些事件中不断的切换 切换。。

我们之前说过,推荐设置worker的个数为cpu的核数,在这里就很容易理解了,更多的worker数,只会导致进程来竞争cpu资源了,从而带来不必要的上下文切换。而且,nginx为了更好的利用多核特性,提供了cpu亲缘性的绑定选项,我们可以将某一个进程绑定在某一个核上,这样就不会因为进程的切换带来cache的失效。像这种小的优化在nginx中非常常见,同时也说明了nginx作者的苦心孤诣。比如,nginx在做4个字节的字符串比较时,会将4个字符转换成一个int型,再作比较,以减少cpu的指令数等等。(这一段抄得。。还没用到,所以不知道怎么理解)

一个nginx能建立的最大连接数,应该是worker_connections * worker_processes

比如图片服务器,通常一个网页会包含很多个图片。打开keepalive也会大量减少time-wait的数量。




分享到:
评论

相关推荐

    NGINX学习资源推荐

    - **简介**:这本书从基础到进阶,涵盖了NGINX的各个方面,包括安装、配置、管理等,是学习NGINX不可多得的好书。 - **适用人群**:初学者到高级用户。 3. **《Nginx Web Server Administration》** - **作者**...

    大数据学习进阶实战大纲,学习路径

    在大数据学习的道路上,系统性地掌握知识是至关重要的。以下是一个详细的学习进阶实战大纲,旨在帮助你从初级到高级逐步提升技能,避免在不重要的...记住,持续学习和实践是关键,这将助你在大数据的世界中不断进步。

    NGINX-NGINX.rar

    **NGINX详解** NGINX是一款高性能的Web服务器及反向代理服务器,因其轻量级、稳定性和高并发处理能力而备受青睐。在Linux环境中,NGINX扮演着重要的角色,尤其...不断学习和实践,才能更好地驾驭这个强大的Web服务器。

    nginx的具体介绍.docx

    - **技术支持完善**:无论是新手入门还是高级进阶,都能够找到适合自己的学习资源和技术支持。 #### 三、其他优势 - **易于安装与管理**:Nginx支持多种主流操作系统(如Linux、Windows等),并且提供了简单直观...

    这个教程将帮助您了解Nginx的基本概念、安装方法以及如何配置它来处理常见的Web服务器任务 Nginx以其高性能和稳定性而闻名

    并且提供了丰富的进阶资源,让使用者能够在实际操作过程中不断进步,满足对提高系统性能的要求。 适用人群:适合刚开始接触网络服务管理的学习者或者是正在寻找提升web服务器效率的管理员。 使用场景及目标:适用于...

    秒杀系统设计与实现.互联网工程师进阶与分析

    秒杀系统设计与实现是互联网行业中一个至关重要的领域,它涉及到高并发、高性能以及稳定性等核心挑战。在本文中,我们将深入探讨秒杀系统的设计原理、关键...在实践中,不断学习和优化,才能应对日益复杂的业务需求。

    征服 Nginx

    《征服Nginx》 Nginx是一款高性能的HTTP和反向代理服务器,因其轻量...总结,掌握Nginx不仅是了解其基本功能,更在于理解其内部机制,通过源码学习和使用工具,能更好地适应不断变化的Web环境,提高服务质量和稳定性。

    Java进阶路线

    ### Java进阶路线详解 ...综上所述,Java的学习之路是一个不断积累的过程。从基础语法到高级框架,每一步都需要扎实掌握才能更好地应对实际工作中的挑战。希望本文能够为Java学习者们提供一份全面的学习指南。

    互联网 Java 工程师进阶知识完全扫盲

    "互联网 Java 工程师进阶知识完全扫盲"是一个全面的学习资源,旨在帮助Java开发者提升技能,掌握在高并发、分布式、高可用、微服务以及海量数据处理等关键领域的专业知识。 首先,我们要讨论的是高并发处理。在...

    狂神说各种学习视频配套笔记

    【狂神说各种学习视频配套笔记】是一套全面覆盖了多个IT技术领域的学习资源,旨在帮助初学者和进阶者提升编程技能。...同时,持续跟进技术发展,不断学习新的框架和工具,是成为IT行业的专业人士的必经之路。

    辛星 MySQL、Linux、Node、Nginx、Redis、CouchDB、Git 教程 2015

    在2015年的教程中,辛星会讲解MySQL的基础操作,包括创建数据库、数据表,以及插入、查询、更新和删除数据等基本操作。进一步,他将引导学员深入学习数据库设计,如数据库架构设计和性能优化,以及如何进行数据库的...

    PHP高级工程师必知必会Nginx+keepalived+MongoDB+haproxy+Sphinx实现分布式集群部署实战视频

    通过本实战视频的学习,我们了解了如何利用Nginx + keepalived + MongoDB + haproxy + Sphinx这一组合来构建一套完整的分布式集群部署方案。该方案不仅能够有效应对高并发访问带来的挑战,还具备良好的扩展性和可...

    PHP语言进阶和高级应用(PDG)

    在PHP语言的世界里,进阶和高级应用是程序员提升技能的关键步骤。...本资料“PHP语言进阶和高级应用(PDG)”旨在帮助已经掌握PHP基础的学员进一步提升自己的编程技巧...通过实践和不断学习,你将成为一名熟练的PHP开发者。

    java秒杀系统设计与实现.互联网工程师进阶与分析

    在互联网行业中,秒杀系统是常见的一种营销策略,它能够短时间内吸引大量用户参与,从而提升产品销售和品牌影响力。本文将深入探讨Java技术...在实践中,我们需要不断学习和探索,以应对不断变化的业务需求和技术挑战。

    从0开始 学习PHP+MySQL+Linux 学习路线.zip

    通过LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx + MySQL + PHP)架构,你可以学习如何配置服务器环境,安装并配置Apache或Nginx web服务器,设置PHP解析器,并与MySQL数据库进行连接。在此过程中,...

    shell入门到进阶,脚本机动化

    根据给定的文件标题、描述、标签以及部分内容,本文将详细介绍与shell脚本相关的知识点,内容涵盖从入门到进阶的多个方面。 ### Shell 脚本自动化批量系统初始化 在自动化批量系统初始化方面,shell脚本能够实现一...

    IT运维工程师的23个细节进阶.docx

    以上只是IT运维工程师23个细节进阶中的部分要点,实际工作中还需要结合具体业务需求和技术趋势,不断学习和适应新的技术和解决方案。运维工程师的角色不仅是系统的守护者,也是创新者,不断提升系统的稳定性和效率是...

    lua-nginx游乐场

    《lua-nginx游乐场:探索Web服务器的动态扩展能力》 在互联网技术日新月异的今天,Web服务器的角色越来越重要。...在这个过程中,不断学习和实践,你将掌握一门新的技术利器,为你的IT职业生涯增添一抹亮色。

    Web学习积累,学习笔记

    在Web开发领域,学习积累是不断提升技术和理解框架的关键。...通过不断学习和实践,开发者可以构建出更加高效、安全且用户体验良好的Web应用。不断更新知识,跟踪新技术,是保持在Web开发领域竞争力的必要条件。

Global site tag (gtag.js) - Google Analytics