nginx负载均衡,安装,反向解析
Posted 漫漫python路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx负载均衡,安装,反向解析相关的知识,希望对你有一定的参考价值。
nginx是什么
nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用。 nginx比它大哥apache性能改进许多,nginx占用的系统资源更少,支持更高的并发连接,有更高的访问效率。
nginx不但是一个优秀的web服务软件,还可以作为反向代理,负载均衡,以及缓存服务使用。
安装更为简单,方便,灵活。
nginx可以说是非常nb了
面试回答nginx技巧
支持高并发,能支持几万并发连接
资源消耗少,在3万并发连接下开启10个nginx线程消耗的内存不到200M
可以做http反向代理和负载均衡
支持异步网络i/o时间模型epoll
Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。
安装环境准备
一. gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装: yum install gcc-c++ 二. PCRE pcre-devel 安装 PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令: yum install -y pcre pcre-devel 三. zlib 安装 zlib 库提供了很多种压缩和解压缩的方式, nginx 使用 zlib 对 http 包的内容进行 gzip ,所以需要在 Centos 上安装 zlib 库。 yum install -y zlib zlib-devel 四. OpenSSL 安装 OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及 SSL 协议,并提供丰富的应用程序供测试或其它目的使用。 nginx 不仅支持 http 协议,还支持 https(即在ssl协议上传输http),所以需要在 Centos 安装 OpenSSL 库。 yum install -y openssl openssl-devel
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel -y
安装,启动nginx
1.下载源码包
cd /opt wget -c https://nginx.org/download/nginx-1.12.0.tar.gz
2.解压缩源码
tar -zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0
yum install pcre-devel -y
3.配置,编译安装
./configure --prefix=/opt/nginx1-12/
make && make install
4.启动nginx,进入sbin目录,找到nginx启动命令
cd sbin
./nginx #启动
./nginx -s stop #关闭
./nginx -s reload #重新加载
nginx访问日志(access_log)
日志功能对每个用户访问网站的日志信息记录到指定的日志文件里,开发运维人员可以分析用户的浏览器行为,此功能由ngx_http_log_module模块负责,官网地址是:
http://nginx.org/en/docs/http/ngx_http_log_module.html
控制日志的参数
log_format 记录日志的格式,可定义多种格式 accsss_log 指定日志文件的路径以及格式
log_format main \'$remote_addr - $remote_user [$time_local] "$request" \'
\'$status $body_bytes_sent "$http_referer" \'
\'"$http_user_agent" "$http_x_forwarded_for"\';
对应参数解析
$remote_addr 记录客户端ip $remote_user 远程用户,没有就是 “-”
$time_local 对应[14/Aug/2018:18:46:52 +0800]
$request 对应请求信息"GET /favicon.ico HTTP/1.1"
$status 状态码
$body_bytes_sent 571字节 请求体的大小
$http_referer 对应“-” 由于是直接输入浏览器就是 -
$http_user_agent 客户端身份信息
$http_x_forwarded_for 记录客户端的来源真实ip 97.64.34.118
日志效果如下
66.102.6.6 - - [14/Aug/2018:18:46:52 +0800] "GET /favicon.ico HTTP/1.1" 404 571 "-"
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 Google Favicon" "97.64.34.118"
nginx.conf默认配置
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 logs/access.log main;
日志格式配置定义
log_format是日志关键字参数,不能变 main是日志格式指定的标签,记录日志时通过main标签选择指定的格式。
集群的概念
集群就是一组(若干个)相互独立的计算机,利用网络组成一个较大的计算机服务器系统,每个节点运行各自的独立服务器。 服务器之间彼此通信,协同向用户提供应用程序,系统资源和数据。
当用户请求集群系统时,用户的感知就是一台单一的服务器,其实用户的请求是发给了一组服务器
就像百度的页面,你可能觉得这么简单的页面10分钟就能做出一样的页面,实际上这个页面的背后是成千上万的服务器集群协同工作提供的服务。
简单来说,集群就是一堆服务器一起干一件事,这些机器可以在一个机房,也可以分布在全国各地机房。
集群的分类
计算机集群常分为: 负载均衡集群 高性能计算集群 高可用性集群 网格计算集群
负载均衡集群
负载均衡集群为企业提供更实用,性价比更好的系统架构解决方案。 负载均衡集群可以吧客户集中的访问请求压力,尽可能平均的分摊在计算机集群中处理,每个节点都承担一定的访问请求压力,并且实现访问请求在各个节点之间动态分配,以实现负载均衡。
运作方式
负载均衡集群运行时,一般通过一个或多个负载均衡器将客户请求分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。
Nginx负载均衡集群
反向代理和负载均衡的概念
确切的说,Nginx仅仅是nginx proxy反向代理的用法,因为这个反向代理效果和负载均衡集群效果一样,也被称作nginx负载均衡。 nginx反向代理是接收用户的请求,然后重新发起请求去请求后面的节点
nginx实现负载均衡的组件
ngx_http_proxy_module proxy代理模块,用于把请求抛给服务器节点或者upstream服务器池
ngx_http_upstream_module 负载均衡模块
反向代理逻辑图
实现一个简单的负载均衡
机器准备,两台服务器
master 192.168.11.63 主负载
slave 192.168.11.64 web1
主负载均衡节点的配置文件
检查语法并启动nginx
[root@master 192.168.11.63 /opt/nginx1-12]$/opt/nginx1-12/sbin/nginx -t nginx: the configuration file /opt/nginx1-12/conf/nginx.conf syntax is ok nginx: configuration file /opt/nginx1-12/conf/nginx.conf test is successful
#启动nginx
[root@master 192.168.11.63 /opt/nginx1-12]$/opt/nginx1-12/sbin/nginx
#检查端口
[root@master 192.168.11.63 /opt/nginx1-12]$netstat -tunlp|grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8921/nginx: master
此时访问master的服务器192.168.11.63:80地址,已经会将请求转发给slave的80端口
除了页面效果的展示以外,还可以通过log(access.log)查看代理效果
master端日志
slave端日志
以上是关于nginx负载均衡,安装,反向解析的主要内容,如果未能解决你的问题,请参考以下文章
Nginx安装 配置反向代理 负载均衡 upstream ssl证书提供https访问 ha nginx keepalived双主热备 LVS实现高可用负载 Keepalived+Lvs+Nginx