Nginx技术研究系列1-通过应用场景看Nginx的反向代理
随着我们业务规模的不断增长,整个系统规模由两年前的几十台服务器,井喷到现在2个数据中心,接近400台服务器,上百个WebApi站点,上百个域名。 这么多的WebApi站点这么多的域名,管理和维护成本很高。 后续随着系统规模的继续扩张,必须实现域名的统一规划,使用Nginx实现请求的反向代理和动态路由。 从实际场景出发,看一看实际的场景是什么? http://api.***.com/action => http://192.168.0.11/api/action 根据请求的Action动态解析对应的内网服务器地址,再实现服务的转发。 一、 工欲善其事必先利其器,先科普一下Nginx 1. HTTP基础功能
2. IMAP/POP3 代理服务功能
3. 支持的操作系统
二、Nginx的核心应用场景 1. 作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。能够支持高达 50,000 个并发连接数的响应,Nginx 为选择了 epoll and kqueue 作为开发模型. 3. Nginx 安装简单,配置文件非常简洁(还能够支持perl语法),Bugs非常少的服务器: Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。支持不间断服务的情况下进行软件版本的升级。 我们对Nginix的实际应用场景: 我们迁移.Net Core之后,前端使用Vue,我们将使用Nginx作为反向代理服务器和Http服务器 WebApi站点反向代理用 三、CentOS下安装部署Nginx 1. 安装Make yum -y install gcc automake autoconf libtool make 2. 安装g++ yum gcc gcc-c++ 3. 安装PCRE库 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz tar -zxvf pcre-8.38.tar.gz cd pcre-8.34 ./configure make make install 4. 安装Zlib cd /usr/local/src wget http:zlib.net/zlib-1.2.11.tar.gz tar -zxvf zlib-1.2.11..gz cd zlib-8install 5. 下载解压SSL wget https:www.openssl.org/source/openssl-1.0.2l.tar.gz tar -zxvf openssl-1.0.2l.tar.gz 6. 安装Nginx cd /usr/local/nginx.org/download/nginx-1.4.2.tar.gz cd nginx-1.4.2 ./configure --sbin-path=/usr/local/nginx/nginx --conf-path=/usr/local/nginx/nginx.conf --pid-path=/usr/local/nginx/nginx.pid --with-http_ssl_module --with-pcre=/opt/app/openet/oetal1/chenhe/pcre-8.37 --with-zlib=/opt/app/openet/oetal1/chenhe/zlib- --with-openssl=/opt/app/openet/oetal1/chenhe/openssl-1.0.1t install 7. 启动Nginx,使用默认的Nginx.Conf文件 sudo /usr/local/nginx/nginx
?四、 Nginx反向代理设置 在设置Nginx反向代理之前,我们需要谨慎的规划URL的使用!!! Nginx中location对url匹配; 语法:location [=|~|~*|^~] /uri/ { … } 当匹配中符合条件的location,则执行内部指令; 如果使用正则表达式,必须使用~*表明不区分大小写或者~区分大小写匹配; 当匹配成功后,将停止往下匹配;如果没有找到,则使用常规自字符串处理结果;
举个示例: 把xxx123.tk域名指向静态IP,这样就实现了在浏览器中 同时,示例一个Nginx负载均衡配置 五、Nginx动态路由 在Nginx的设计中,每一个upstream维护了一张静态路由表,存储了backend的ip、port以及其他的meta信息。 每次请求到达后,会依据location检索路由表,然后依据具体的调度算法(如round robin )选择一个backend转发请求。 但这张路由表是静态的,如果变更后,则必须reload,经常reload的话这对SLA有较大影响。 为了达到减少reload的目的,大多通过动态更新维护路由表来解决这个问题。 各种google、百度之后,找到了几个线索:Nginx、Lua、Redis 然后又发现了新大陆OpenResty: OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。 下面几篇文章,我们继续研究上面这个新大陆。 ? 周国庆 2017/10/1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – Heartbeat / DRBD故障转移未按预期工作.如何使故障
- Linux 64位上下文切换
- 如果Linux中单个目录下的文件太多,会发生什么?
- login – 以root身份登录而不使用winbind超时
- linux – 更好的方式根据多种模式重命名文件
- (7)ceph 2 pgs inconsistent故障
- linux – 如何在shell脚本中使用grep来查找文件内的单词
- How to restrict root user to access or modify a file an
- linux – 一旦我设置iptables重新路由端口,我该如何撤消它?
- linux – 设备eth0具有与预期不同的MAC地址