nginx--代理和负载均衡
nginx代理
nginx的代理分为正向代理和反向代理
正向代理指的是,一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。
反向代理的配置
nginx的反向代理功能就是 proxy_pass参数,反向代理可以起到保护网站安全的作用,因为任何来自internet的请求都必须先经过代理服务器
准备两台装有nginx的服务器,一台作为主的,一台作为副的。
master 192.168.88.67 主负载
slave 192.168.88.68 web1
主负载均衡节点的配置文件,只需要在主的服务器的配置文件下的server里加上proxy_pass http://192.168.88.68; 就可以了
server {
listen 80;
server_name www.zouozu.com;
location / {
proxy_pass http://192.168.88.68; # 只需要加上这句就可以了,请求会直接转发给192.168.88.68机器,
}
配置文件保存之后,检查语法并加载配置文件
../sbin/nginx -t # 检查语法
../sbin/nginx -s reload # 加载配置文件
此时访问master的服务器192.168.88.67:80地址,会将请求转发给slave的80端口除了页面效果的展示以外,还可以通过log(access.log)查看代理效果
集群
集群就是一组(成千上万)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统。每个集群节点都是运行各自服务的独立服务器,这些服务器之间可以彼此通信,协同向用户提供应用程序。系统资源和数据,并以单一系统的模式加以管理。当用户请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的上一组集群服务器。简单的说集群就是一堆服务器合作做同一件事。
集群的特点
1 提高性能
一些计算密集型应用,如:天气预报、核试验模拟等,需要计算机要有很强的运算处理能力,现有的技术,即使普通的大型机器计算也很难胜任。这时,一般都使用计算机集群技术,集中几十台甚至上百台计算机的运算能力来满足要求。提高处理性能一直是集群技术研究的一个重要目标之一。
2 降低成本
通常一套较好的集群配置,其软硬件开销要超过100000美元。但与价值上百万美元的专用超级计算机相比已属相当便宜。在达到同样性能的条件下,采用计算机集群比采用同等运算能力的大型计算机具有更高的性价比。
3 提高可扩展性
用户若想扩展系统能力,不得不购买更高性能的服务器,才能获得额外所需的CPU 和存储器。如果采用集群技术,则只需要将新的服务器加入集群中即可,对于客户来看,服务无论从连续性还是性能上都几乎没有变化,好像系统在不知不觉中完成了升级。
4 增强可靠性
集群技术使系统在故障发生时仍可以继续工作,将系统停运时间减到最小。集群系统在提高系统的可靠性的同时,也大大减小了故障损失。
nginx负载均衡
web服务器,要承受大量的请求,例如淘宝的双十一,单台机器难以承受那么多的压力,使用多台服务器组成集群,使用nginx负载均衡。将请求分散的给我们后台服务器集群中。实现负载的分发,会大大提升系统的性能。

nginx要实现负载均衡需要用到proxy_pass代理模块配置,nginx负载均衡与nginx代理不同地方在于nginx代理仅代理一台服务器,而nginx负载均衡则是将客户端请求代理转发至一组upstream负载均衡池。nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用。
upstream配置
1.在nginx.conf里写入下面内容,写在http区域中,和server同级,mynginx可以自己定义,后面的是两台服务器的地址和端口
upstream mynginx {
server 192.168.88.67:8000;
server 192.168.88.68:8000;
}
2.在nginx.conf > http 区域 > server区域 > location配置中添加proxy_pass
location / {
root html;
index index.html index.htm;
proxy_pass http://mynginx;
include /opt/nginx1-16/conf/proxy_params;
}

# 定义负载均衡池名字叫做mynginx
upstream mynginx {
# 池子中存放2个服务器,默认轮训方式调度服务器
server 192.168.88.67:8000;
server 192.168.88.68:8000;
}
# root参数定义网页的根目录,可以写在虚拟主机内,局部变量
# 如果写在server标签外,就是全局变量
root html;
# 虚拟主机1
server {
listen 80;
server_name www.zouzou.com;
location / { # 当请求发送到www.zouzou.com的时候,匹配到 / ,就执行以下代码
proxy_pass http://mynginx;
#包含语法参数,将一个配置文件添加到当前虚拟主机生效,这个文件要手动创建
#这个proxy_params文件创建在/opt/nginx1-16/conf/底下
include proxy_params;
}
解释
3.手动创建这个参数文件
touch /opt/nginx1-16/conf/proxy_params写入下面内容
[root@HH conf]# cat proxy_params
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60; proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
此时初步负载均衡已经完成,upstream默认按照轮训方式负载,每个请求按时间顺序逐一分配到后端节点。
检查配置文件并加载
4.配置应用服务器1
准备一个flask代码,运行
准备代码 myflask.py
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "<h1>I am is zouzou ~~~~~</h1>"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8000)
启动应用服务器
python3 myflask.py
5.配置应用服务器2
和上面的一样,可以把return里面的内容改一下,方便区分
6.通过访问nginx负载均衡器入口,查看负载均衡 是否正常分配,默认是轮训方式
访问自己的nginx负载均衡的ip地址,查看结果
upstream分配策略
在上面我们配置upstream时,没有加多余的参数,默认采用轮询的方式,一个服务器一次,循环,nginx提供给了我们其他的策略
weight 权重
upstream mynginx {
server 192.168.88.67:8000 weight=3;
server 192.168.88.68:8000 weight=7; # 这个节点的访问频率是大于上面的,比例为3/7
}
ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器
upstream mynginx {
ip_hash; # 加个这就可以了
server 192.168.88.67:8000;
server 192.168.88.68:8000;
}
backup
在非backup机器繁忙或者宕机时,请求backup机器,因此机器默认压力最小
upstream mynginx {
server 192.168.88.67:8000;
server 192.168.88.68:8000;
server node.zouzou.com:8080 backup;
}
nginx--代理和负载均衡的更多相关文章
- Nginx代理与负载均衡配置与优化
Nginx代理 Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反 ...
- Nginx代理与负载均衡
序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的 ...
- Nginx代理和负载均衡实验
一.构建两个tomcat容器并启动 [root@localhost bin]# ps -ef|grep tomcat root : pts/ :: /usr/bin/java -Djava.util. ...
- 12.Nginx代理与负载均衡
1.什么是代理? 代为办理 --> 代理 2.Nginx正向代理.反向代理 正向代理: --> 上网 | 路由器替代 反向代理: --> 正向与反向代理的区别: 区别在于形式上服务的 ...
- nginx代理,负载均衡
#代理,如:通过代理实现访问百度(单个机器)创建vim proxy.conf内容如下server { listen 80; server_name www.baidu.com; location / ...
- 使用nginx代理weblogic负载方案
之前一直用apache来做weblogic的前端,由于nginx对静态内容的出色性能,不得不转投nginx.这里就不 再写weblogic的安装了. 安装nginx nginx需要pcre做支持,一般 ...
- Windos环境用Nginx配置反向代理和负载均衡
Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...
- Nginx反向代理,负载均衡,redis session共享,keepalived高可用
相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...
- Nginx服务器 之反向代理与负载均衡
一.反向代理 正向代理: 客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就是正向代理.正向代理的特点:就是我们明确知道要访问哪个网站地址. 反向代理: 客户端想获 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解
转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...
随机推荐
- Java_JDBC 连接
今天,接着上一篇( mysql 数据库 )的基础上,我就写一下 Java 怎样连接数据库,并且操作数据库. 首先,我们先来准备一下数据库连接的驱动: mysql 的 jar 包下载地址:https:/ ...
- Android WebView与H5联调技巧
版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/78 背景: 突然想写一篇关于Android WebView ...
- phpStorm+xdebug调试(php7.3)
一.首先安装xdebug 安装xdebug比 ,运行php -i >phpinfo.txt 或者 echo phpinfo();将全部信息贴到https://xdebug.org/wizard. ...
- 快速查看本地IP地址
1. 新建Windows批处理文件(*.bat) @echo off echo 本机IP ipconfig|find "IPv4" echo. echo 电脑名 hostname ...
- ASCII码表收藏
ASCII码表 ASCII码值 ESC键 VK_ESCAPE (27)回车键: VK_RETURN (13)TAB键: VK_TAB (9)Caps Lock键: VK_CAPITAL (20)Shi ...
- Vant-Weap通过事件获取值
van-field框的使用 和通过事件获取值 <van-cell-group> <van-field value="{{username}}" label=&qu ...
- windows10 安装win10和ubuntu 16.04双系统
安装教程如下 亲测可用 https://www.cnblogs.com/masbay/p/10844857.html 镜像路径如下 http://releases.ubuntu.com/16.04/ ...
- 急速下载pandas
使用国内源进行下载: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua ...
- go语言的json
简介 json 中提供的处理 json 的标准包是 encoding/json,主要使用的是以下两个方法: // 序列化 func Marshal(v interface{}) ([]byte, er ...
- ETCD:HTTP JSON API通过gRPC网关
原文地址:HTTP JSON API through the gRPC gateway etcd v3 使用 gRPC 作为消息协议.etcd项目包括一个基于gRPC的Go客户端和一个命令行工具,et ...