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

[经验分享] linux-nginx-1

[复制链接]

尚未签到

发表于 2018-11-13 11:47:20 | 显示全部楼层 |阅读模式
  NGINX
  机器环境:web主机192.168.2.18 centos7  测试主机192.168.2.29
  Nginx (“engine x”) 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,具有占用内存少,并发能力强等优点。
  官网:www.nginx.org
  官方文档:http://nginx.org/en/docs/
  中文文档:http://tengine.taobao.org/nginx_docs/cn/docs/
  二、nginx的功能与特性
  1、基本功能及特性
  ①作为静态资源的web服务器,能缓存打开的文件描述符;
  ②作为反向代理服务器,可做缓存、负载均衡;
  ③支持FastCGI
  ④模块化,非DSO机制(不能动态装卸载),过滤器gzip,SSI和图像大小调整等
  ⑤支持SSL
  2、扩展功能:
  ①基于名称和IP做虚拟主机
  ②支持keepalive
  ③支持平滑配置更新或程序版本升级
  ④定制访问日志,支持使用日志缓存以提高性能
  ⑤支持url rewrite
  ⑥支持路径别名
  ⑦支持基于IP及用户的认证;
  ⑧支持速率限制,并发限制等;
  三、nginx的进程模型
DSC0000.jpg

  。
  ◆nginx会运行一个主进程(master)和若干个由其fork出来的工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等。所有进程均是仅含有一个线程,并主要通过“共享内存”的机制实现进程间通信。连接请求就由为数不多的几个仅包含一个线程的worker进程以高效的回环(run-loop)机制进行处理,这样就不会引起很多的进程/线程上下文切换,从而降低了系统开销。每个线程内部对socket的管理方式是异步非阻塞的,使用epoll事件驱动机制来实现对大量socket描述符的管理,当描述符多的时候也只是会占用较多的内存而已,而不会造成占用大量cpu时间,这就是nginx并发能力强的原因。每个worker可以并行处理数千个的并发连接及请求。
  每个worker进程是平等的,当有连接请求进来,交由哪个worker处理呢?master进程在建立需要listen的socket之后,fork出若干个worker进程,所有worker进程会抢互斥锁,抢到的的接受并处理连接请求,返回数据给客户端,最后断开连接,一个请求只在由一个worker处理。
  worker数是可以设置的:如果负载以CPU密集型应用为主,如SSL或压缩应用,则worker数应与CPU数相同;如果负载以IO密集型为主,如响应大量内容给客户端,则worker数应该为CPU个数的1.5或2倍。
  主进程以root用户身份运行,而worker、cache loader和cache manager均应以非特权用户身份运行。
  主进程主要完成如下工作:
  ①读取并验正配置信息;
  ②创建、绑定及关闭套接字;
  ③启动、终止及维护worker进程的个数;
  ④无须中止服务而重新配置工作特性;
  ⑤控制非中断式程序升级,启用新的二进制程序并在需要时回滚至老版本;
  ⑥重新打开日志文件,实现日志滚动;
  ⑦编译嵌入式perl脚本;
  worker进程主要完成的任务包括:
  ①接收、传入并处理来自客户端的连接;
  ②提供反向代理及过滤功能;
  ③nginx任何能完成的其它任务;
  cache loader进程主要完成的任务包括:
  ①检查缓存存储中的缓存对象;
  ②使用缓存元数据建立内存数据库;
  cache manager进程的主要任务:
  ①缓存的失效及过期检验;
  

     四、nginx的模块和工作原理  

  nginx代码是由内核和一系列的模块组成, nginx内核主要用于提供Web Server的基本功能,以及Web和Mail反向代理的功能;还用于启用网络协议,创建必要的运行时环境以及确保不同的模块之间平滑地进行交互。不过,大多跟协议相关的功能和某应用特有的功能都是由nginx的模块实现的。
  ◆nginx模块从结构上分为:
  核心模块
  http模块
  http标准模块
  http可选模块
  如 http_stub_status_module,http_ssl_module,http_gzip_static_module
  邮件模块
  第三方扩展模块
  ◆nginx模块从功能上分为:
  handlers:此类模块直接处理请求,并生成内容
  filter:此类模块对其它handlers生成的内容进行修改,最后由nginx输出
  proxies:此类模块主要与后端服务如fastcgi进行交互,实现服务代理和负载均衡等功能
  NGINX 1.9.11开始增加加载动态模块支持,从此不再需要替换nginx文件即可增加第三方扩展。目前官方只有几个模块支持动态加载,第三方模块需要升级支持才可编译成模块。
  这里可以参考这篇文章https://www.cnblogs.com/tinywan/p/6965467.html
  五、nginx安装
  首先要先安装开发环境
  yum -y groupinstall "Development Tools" "Server Platform Development"
  nginx的rewrite模块和http核心模块会用到PCRE正则表达式语法,所以要安装pcre-devel
  yum -y install gcc pcre-devel openssl-devel zlib-devel
  我们这里采用yum安装,需要有epel源,配置epel源:
  yum install epel-release.noarch
  yum install nginx
  补充一个编译安装的例子
  首先创建nginx用户和组
  groupadd nginx
  useradd -r -s /sbin/nologin nginx
  下载源码包
  wget http://nginx.org/download/nginx-1.14.0.tar.gz
  tar xf nginx-1.14.0.tar.gz
  cd nginx-1.14.0
  ./configure \
  --prefix=/usr/local/nginx
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx/nginx.pid \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \   #指定以什么身份运行worker进程
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \   #流媒体模块
  --with-http_stub_status_module \  #监控运行状态的模块
  --with-http_gzip_static_module \
  --http-client-body-temp-path=/usr/local/nginx/client \   #临时包体的暂存路径
  --http-proxy-temp-path=/usr/local/nginx/proxy \
  --http-fastcgi-temp-path=/usr/local/nginx/fcgi \
  --http-uwsgi-temp-path=/usr/local/nginx/uwsgi \
  --http-scgi-temp-path=/usr/local/nginx/scgi \
  --with-pcre
  make && make install



运维网声明 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-634548-1-1.html 上篇帖子: Nginx安装,默认虚拟主机以及认证和重定向 下篇帖子: lnmp环境下TP框架的项目nginx配置文件的设置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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