一、代理服务器

服务   功能 配置语法 默认 配置位置 配置举例  结果验证 备注
代理服务 反向代理 proxy_pass URL   location、if in location、limit_except这一级来配置

server {

    listen       80;

    server_name  localhost;

    #charset koi8-r;

    #access_log  /var/log/nginx/host.access.log  main;

   location ~ \.php{

       proxy_pass http://172.20.163.135:80;

       root index.html;

}

此时访问http://nginx服务器/1.php  相当于访问了http://172.20.163.135/1.php  
代理服务 正向代理 proxy_pass http://$http_host$request_uri;
$http_host代表要访问的主机名
$request_uri代表要访问的URI
    resolver 114.114.114.114;
    location / {
        proxy_pass http://$http_host$request_uri;
    }
此时挂好代理就可以访问http的网页了,但是不能访问https网页  
代理的扩展 缓冲区 proxy_buffering on|off proxy_buffering on http、server、location这一级来配置

location / {

    proxy_pass http://127.0.0.1:8080;

    proxy_redirect default;

  proxy_set_header Host $http_host;   ===>要访问的目的主机

    proxy_set_header X-Real-IP $remote_addr;   ===>客户端真实IP

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  ==>如果使用代理访问的话使用此方式可获取代理链

  proxy_connect_timeout 30;

    proxy_send_timeout 60;

    proxy_read_timeout 60;

 proxy_buffer_size 32k;

    proxy_buffering on;

    proxy_buffers 4 128k;

    proxy_busy_buffers_size 256k;

    proxy_max_temp_file_size 256k;

}

  尽可能的将请求信息接收完再将数据包统一转发出去
代理的扩展 跳转重定向 proxy_redirect default|off
proxy_redirect redirect replacement
proxy_redirect default http、server、location这一级来配置   反向代理时后端服务器发来301报文时不是把301转发给客户端,而是根据301再去访问被重定向到的地址,拿到最终数据后再返回给客户端
关闭后就直接将301报文转发给客户端
这个选项一般默认即可
代理的扩展 修改头信息

proxy_set_header field value

扩展:proxy_hide_header、proxy_set_body

  http、server、location这一级来配置 proxy_set_header X-Real-IP $remote_addr;
访问后端server时增加X-Real-IP头部,值为$remote_addr
在经过中间这层代理后,后端server就拿不到最初源的一些信息了(比如说真实源IP)。
为了解决这个问题可以用这个方法为数据包再加一个映射的头信息,好让后端server知道真实的源信息

代理的扩展

Nginx作为代理到后端server的超时

proxy_connect_timeout time

扩展:proxy_read_timeout、proxy_send_timeout

proxy_connect_timeout 60s http、server、location这一级来配置  

TCP连接超时

扩展:TCP已经建立的基础上等待回应的时间

测试的时候没测出来有什么效果

二、负载均衡器

功能 配置语法

配置

位置

配置举例

结果验证

备注

负载均衡 upstream name{
    server IP|域名 端口 属性;
}
location / {
        proxy_pass http://name;
    }

http这

一级来

配置

upstream imooc {

     ip_hash;

    server 172.20.163.135:80 weight=5;

    server cctv.com:80;

    server 172.20.163.126:80 backup;

    server 172.20.163.123:80 down;

    server 172.20.163.111:80 max_fails 5;

    server 172.20.163.33:80 fail_timeout 60s;

    server 172.20.163.42:80 max_conns 1024;

}

location / {

proxy_pass http://imooc;

}

访问http://Nginx地址/时

流量会负载均衡到

135、123、126

这三台设备上

后端服务器在负载均衡调度中的状态:

down:当前的server暂时不参与负载均衡

backup:预留的备份服务器(其他主机全部down掉它起来)

max_fails:允许请求失败的次数(健康检查)

fail_timeout:经过max_fails失败后,服务暂停的时间

max_conns:限制后端server最大的接收连接数

调度算法(默认为轮询):

轮询:按时间顺序逐一分配到不同的后端服务器

加权轮询:weight值越大,分配到的概率越高(只要后面加了weight就自动从轮询变为加权轮询)

ip_hash:每个请求按访问的源IP的hash结果分配,这样可以保证一个源IP的每次访问固定的一台后端

server url_hash:按照访问的URL的hash结果来分配请求,每个URL定向到同一个后端服务器

hash关键数值:hash自定义的key

nginx搭建代理服务器与负载均衡器的更多相关文章

  1. 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  2. Nginx搭建反向代理服务器过程详解

    一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...

  3. Nginx搭建反向代理服务器

    [大型网站技术实践]初级篇:借助Nginx搭建反向代理服务器   一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受int ...

  4. Nginx 搭建反向代理服务器过程详解

    1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet ...

  5. Windows下使用nginx搭建反向代理服务器

    反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时 ...

  6. 【转】Nginx搭建反向代理服务器过程详解

    阅读目录 1.1 反向代理初印象 1.2 反向代理的作用 2.1 Nginx是神马? 2.2 Nginx的应用现状 2.3 Nginx的核心特点 3.1 准备一个ASP.NET网站部署到IIS服务器集 ...

  7. 【转载】vue-cli搭建的环境,用nginx做代理服务器,访问时显示:Invalid Host header

    来源:https://blog.csdn.net/Cookysurongbin/article/details/86077241 vue-cli搭建的环境,用nginx做代理服务器,访问时显示:Inv ...

  8. 借助Nginx搭建反向代理服务器

    一.反向代理:Web服务器的"经纪人" 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网 ...

  9. nginx搭建http和rtmp协议的流媒体服务器

    nginx搭建http和rtmp协议的流媒体服务器 时间:2013-09-23 23:52来源:佚名 作者:本站 举报 点击:232次 实验目的:让Nginx支持flv和mp4格式文件,同时支持Rtm ...

随机推荐

  1. LinuxVIM编辑器用法

    vi编辑器是Linux系统下标准的编辑器.而且不逊色于其他任何最新的编辑器. 基本上vi可以分为三种状态,分别是命令模式(command mode).插入模式(Insert mode)和底行模式(la ...

  2. golang中的定向通道(Directional channels)

    好像第一次看到这个知识点,作个记录. 注意通道在只能发射或只能接收信息时,<-这个符号放置的位置. package main import "fmt" import &quo ...

  3. RabbitMQ入门及其几种工作模式

    1.简介 MQ全程Message Queue,用于应用程序和应用程序间进行通信.RabbitMQ采用Erlang编写,实现了AMQP(高级消息队列)协议,跨平台,支持各种主流的操作系统和多种客户端. ...

  4. 【cf1272】F. Two Bracket Sequences

    传送门 题意: 给出\(s,t\)两个合法括号序列,现在找到一个长度最小的合法的序列\(p\),使得\(s,t\)都为其子序列. 思路: 考虑\(dp:dp[i][j][d]\)表示第一个串在\(i\ ...

  5. 如何让junit的测试跑多次

    对JUnit4可以使用下面的方法: @RunWith(Parameterized.class) public class RunTenTimes { @Parameterized.Parameters ...

  6. 加速自己的hexo,使用GitHub+Coding实现国内外网站加速

    在配置好hexo之后,我们发现访问网站很慢,但又不是我们使用的主题的问题,那么就是网络环境的影响,即使我们使用了CDN加速,但还是没有我们国内的网站访问起来快速,(听说去美国的服务器要经过太平洋下面的 ...

  7. [LeetCode] 42. Trapping Rain Water 收集雨水

    Given n non-negative integers representing an elevation map where the width of each bar is 1, comput ...

  8. Keras保存模型并载入模型继续训练

    我们以MNIST手写数字识别为例 import numpy as np from keras.datasets import mnist from keras.utils import np_util ...

  9. [转]探索ASP.NET Core 3.0 系列

    这是该系列的第一篇文章:探索ASP.NET Core 3.0. 第1部分-探索新的项目文件Program.cs和通用主机(本文) 第2部分-比较ASP.NET Core 3.0模板之间的Startup ...

  10. hello tensorflow,我的第一个tensorflow程序

    上代码: import tensorflow as tf if __name__=='__main__': g = tf.Graph() # add ops to the user created g ...