码迷,mamicode.com
首页 > 其他好文 > 详细

nginx负载均衡,安装,反向解析

时间:2018-08-18 21:20:36      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:分布   链接地址   config   编译   0.0.0.0   内存   pcr   安全   apple   

nginx是什么

技术分享图片
 
链接地址:https://www.cnblogs.com/pyyu/p/9468680.html
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

技术分享图片
 前提:下载:

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 openssl openssl-devel -y 

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.conf

检查语法并启动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负载均衡,安装,反向解析

标签:分布   链接地址   config   编译   0.0.0.0   内存   pcr   安全   apple   

原文地址:https://www.cnblogs.com/zzw731862651/p/9498590.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!