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. 构建Electron的常见问题(Mac)

    背景 起因是产品的需求,需要更换Electron为底层平台,但因为会有不少定制化的功能要实现,必须自己实现此类内容,所以也就导致必须自己编译Electron的源代码. 整个构建过程,看Electron ...

  2. c#实现两个窗体相互传值

    本文转自:https://mp.csdn.net/postedit/100058721 1.功能展示 有时需要将子界面的内容传递到父界面,方法有好几种.经常用的是通过委托实现.具体的效果如下: ​   ...

  3. urllib模块使用笔记

    文中所有python代码均使用的是python2.7实现,与python3并不兼容. UrlLib模块 urllib模块是适用于一个简单的网络数据获取和处理(不能处理有关验证和cookie等功能),官 ...

  4. 关于SQL2005备份和还原的语法操作

    原数据库:restore database 练习版 from disk='D:\db-recovery\@@@.BAK' WITH REPLACE/WITH NORECOVERY备份数据库:backu ...

  5. [MySQL] mysql中bitmap的简单运用

    bitmap就是在一个二进制的数据中,每一个位代表一定的含义,这样最终只需要存一个整型数据,就可以解释出多个含义.业务中有一个字段专门用来存储用户对某些功能的开启和关闭,如果是传统的思维,肯定是建一个 ...

  6. java 初学 :求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。几个 数相加由键盘控制。

    import java.util.Scanner; public static void main(String[] args) {       Scanner input=new Scanner(S ...

  7. mysql学习体系

    1. MySQL的安装和配置 -- 安装的步骤 -- 配置参数的设置 -- 全局变量量与会话变量量的定义及区别 -- 常⻅见参数有哪些,有何定义,影响范围是什什么 -- 如何查看参数的值 -- 配置⽂ ...

  8. git 分布式控制版本管理器(上)

    git的作用: 1.更方便的存储版本 2.恢复之前的版本 3.更方便的对比 4.协同合作 下载地址git官网: https://git-scm.com/ 可自选自己电脑的操作系统 安装: 一路next ...

  9. C++编译器优化技术:RVO、NRVO和复制省略

    现代编译器缺省会使用RVO(return value optimization,返回值优化).NRVO(named return value optimization.命名返回值优化)和复制省略(Co ...

  10. BootStrap 关于input与btn的点击focus取消特效相关css

    取消btn按钮点击出现的外边框: .btn:focus, /*清除btn按钮点击出现的边框*/.btn:active:focus,.btn.active:focus,.btn.focus,.btn:a ...