| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> Nginx反向代理与conf原理 -> 正文阅读 |
|
[系统运维]Nginx反向代理与conf原理 |
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习 Nginx主要功能Webservice, 反向代理, 负载均衡。 逻辑上,nginx和server的关系是这样的: Nginx和路由器/交换机有什么区别?路由器是物理网关,nginx是应用层网关。 物理上,他们的关系是下图这样的。 Nginx、haproxy、lvs、F5,都可以做负载均衡,有什么区别? 他们处于tcp/ip协议不同层。 Nginx安装所需要的安装包nginx、openssl、pcre、zlib 安装命令 ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_secure_link_module --with-http_stub_status_module --with-stream --with-pcre=/root/nginx/pcre-8.39 --with-zlib=/root/nginx/zlib-1.2.11 --with-openssl=/root/nginx/openssl-1.1.1g 启动nginx cd /usr/local/nginx ./sbin/nginx -c ./conf/nginx.conf 使用默认配置启动nginx 之后通过浏览器访问nginx。 conf文件使用最基本的使用如下:
配置worker进程数
master进程listen端口,网络io由worker进程处理;对于浏览器发送的请求,会产生两个tcp连接,一个是http请求,一个是keep-alive。 配置服务nginx支持http,smtp,websocket等多种应用层协议;也可以listen不同的端口;
配置代理
重定向
负载均衡
提供静态服务内容图片
视频
支持CGIcommon gateway interface, 通用网关接口。nginx通过stdin、stdout也cgi程序进行通信。 主要用在哪里?在线编译工具。 编写一个cgi程序
nginx使用cgi,需要安装fastcgi和spawn-fcgi。cgi是一请求一进程;fastcgi是一个进程池,通过进行管理器对cgi进行管理。spawn-fcgi是fastcgi进行管理器,管理cgi。 spawn-fcgi编译
fastcgi编译安装
通过spawn-fcgi启动cgi程序。
nginx配置
什么是惊群?惊群分为3种:
accept惊群和pthead_cond_wait的惊群,内核已经解决了。 nginx是存在epoll_wait惊群的,为什么呢? 所有workder进程都是从master进程fork出来的,都对同一个端口进行listen,如果在所有worker进程中使用epoll对listenfd进行检测,必然会出现epoll_wait的惊群。 惊群并不会导致业务问题,只会造成很多无效的唤醒,高性能的服务器是不能接受这一点的。 nginx是如何解决epoll_wait惊群的? 通过加accept锁,通过shmem共享内存实现进程锁。 为保证只有一个worker进程对新连接进行处理,所有worker进程在向epoll注册listenfd读事件前抢accept_mutex, 抢到互斥锁的那个进程注册listenfd读事件,在读事件里面调用accept接受该连接。当一个worker进程在accept这个连接之后,就开始读取请求,解析请求,处理请求,产生response后,再返回给客户端,最后才断开连接。一个请求,完全由一个worker进程来处理,而且只在一个worker进程中处理。 其他没有抢到accept锁的worker进程,可以处理其他event。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 1:40:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |