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--代理和负载均衡的更多相关文章

  1. Nginx代理与负载均衡配置与优化

    Nginx代理 Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反 ...

  2. Nginx代理与负载均衡

    序言 Nginx的代理功能与负载均衡功能是最常被用到的,关于nginx的基本语法常识与配置已在上篇文章中有说明,这篇就开门见山,先描述一些关于代理功能的配置,再说明负载均衡详细. Nginx代理服务的 ...

  3. Nginx代理和负载均衡实验

    一.构建两个tomcat容器并启动 [root@localhost bin]# ps -ef|grep tomcat root : pts/ :: /usr/bin/java -Djava.util. ...

  4. 12.Nginx代理与负载均衡

    1.什么是代理? 代为办理 --> 代理 2.Nginx正向代理.反向代理 正向代理: --> 上网 | 路由器替代 反向代理: --> 正向与反向代理的区别: 区别在于形式上服务的 ...

  5. nginx代理,负载均衡

    #代理,如:通过代理实现访问百度(单个机器)创建vim proxy.conf内容如下server { listen 80; server_name www.baidu.com; location / ...

  6. 使用nginx代理weblogic负载方案

    之前一直用apache来做weblogic的前端,由于nginx对静态内容的出色性能,不得不转投nginx.这里就不 再写weblogic的安装了. 安装nginx nginx需要pcre做支持,一般 ...

  7. Windos环境用Nginx配置反向代理和负载均衡

    Windos环境用Nginx配置反向代理和负载均衡 引言:在前后端分离架构下,难免会遇到跨域问题.目前的解决方案大致有JSONP,反向代理,CORS这三种方式.JSONP兼容性良好,最大的缺点是只支持 ...

  8. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  9. Nginx服务器 之反向代理与负载均衡

    一.反向代理 正向代理: 客户端要获取的资源就在服务器上,客户端请求的资源路径就是最终响应资源的服务器路径,这就是正向代理.正向代理的特点:就是我们明确知道要访问哪个网站地址. 反向代理: 客户端想获 ...

  10. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...

随机推荐

  1. spark shell操作

    RDD有两种类型的操作 ,分别是Transformation(返回一个新的RDD)和Action(返回values). 1.Transformation:根据已有RDD创建新的RDD数据集build ...

  2. PHP 字符串大全

    PHP字符串函数是核心的一部分.无需安装即可使用这些函数 函数名称 描述 addcslashes 以 C 语言风格使用反斜线转义字符串中的字符 addslashes 使用反斜线引用字符串 bin2he ...

  3. Mac-关于升级macOS Catalina后,终端试用问题

    xcrun: error 在终端输入 git clone *****后,提示: xcrun: error: invalid active developer path (/Library/Develo ...

  4. 如何实现用户的历史记录功能(最多n条)

    使用容量为n的队列存储历史记录 使用标准库collections中的deque,它是一个双端循环队列 from collections import deque q = deque([], 5) #参 ...

  5. java之工厂方法设计模式

    工厂方法模式是设计模式中应用最广泛的模式.在面向对象的编程中,对象的创建工作非常简单,对象的创建时机却很重要.工厂方法模式就是解决这个问题,它通过面向对象的手法,将所要创建的具体对象创建工作延迟到了子 ...

  6. python-16-初识函数

    前言 以前写的python代码都是像记流水账一样,那么函数时什么额?它可以在任何需要它的地方进行调用,函数分为: 内置函数,print(),len() 自定义函数 一.自定义函数 1.我们都知道内置函 ...

  7. linux安装GD库

    首先我们检查GD库是否安装 php -i | grep -i --color gd 安装GD库 yum install php-gd* 安装完成之后配置php.ini文件 extension=gd.s ...

  8. SpringBoot整合MyBatis-Plus3.1详细教程

    作者:Sans_ juejin.im/post/5cfa6e465188254ee433bc69 一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改 ...

  9. CPU异常分析(以trap00为例)

    Windows内核分析索引目录:https://www.cnblogs.com/onetrainee/p/11675224.html CPU异常的记录(trap00为例) 一.CPU检测到除零异常的执 ...

  10. 使用PrintWriter完成写操作 ,实现简易记事本工具

    package seday07; import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io.IOExce ...