nginx学习3:实现nginx反向代理和负载均衡

nginx学习3:实现nginx反向代理和负载均衡

正向代理和反向代理的区别(这里不赘述什么是正向代理和反向代理)

一句话概括:正向代理隐藏真实客户端,反向代理隐藏真实服务端;即正向代理服务器不知道客户端是谁,反向代理客户端不知道服务器是谁;


反向代理实例1

需求描述:输入nginx监听IP:8081,可以访问真实的IP:8088 tomcat服务

准备tomcat服务

  1-准备tomcat服务(8088端口)

  2-开放防火墙8088端口

##添加8088端口[[email protected]_0_4_centos bin]# firewall-cmd --add-port=8088/tcp --permanent
success

##重新加载配置
[[email protected]_0_4_centos bin]# firewall-cmd --reload
success

##查看开放端口(去儿呢)
[[email protected]_0_4_centos bin]# firewall-cmd --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: ssh dhcpv6-client
  ports: 8081/tcp 8088/tcp
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:
    

  3-测试tomcat服务器

准备ngnix(参考:https://www.cnblogs.com/wobuchifanqie/p/12240696.html)

反向代理配置

  1-在/usr/local/nginx/conf/nginx.conf中加入如下配置: proxy_pass http://XX.XXX.176.26:8088;

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8081;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
        proxy_pass http://XX.XXX.176.26:8088;
            index  index.html index.htm;
        }

}

  2-重新加载nginx

[[email protected]_0_4_centos conf]# cd /usr/local/nginx/sbin/
[[email protected]_0_4_centos sbin]# ./nginx -s reload

测试输入IP:8081直接跳转到IP:8081


反向代理实例2

需求描述:

  输入nginx监听IP:8082/api,可以访问真实的IP:8088 tomcat服务;

  输入nginx监听IP:8082/admin,可以访问真实的IP:8089 tomcat服务

准备tomcat服务

  1-两个tomcat服务器

  2-开放防火墙8088 8089

  3-测试tomcat服务器;

配置nginx配置文件

  1-在/usr/local/nginx/conf/nginx.conf中加入如下配置(红色部分);并重新加载配置

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;

    server {
        listen       8081;
        server_name  localhost;

        location / {
            root   html;
        proxy_pass http://XX.XXX.176.26:8088;
            index  index.html index.htm;
        }

  ##加入新的http server块
    server {
        listen       8082;
        location ~ /api/ {
            proxy_pass   http://XX.XXX.176.26:8088;
        }
    location ~ /admin/ {
            proxy_pass   http://XX.XXX.176.26:8089;
        }

    }

}

  2-开放防火墙8082端口

测试输入nginx监听URI

location 指令说明

  1、= :用于不含正则表达式的 uri 前,要求请求字符串与 uri 严格匹配,如果匹配成功,就停止继续向下搜索并立即处理该请求。

  2、~:用于表示 uri 包含正则表达式,并且区分大小写。

  3、~*:用于表示 uri 包含正则表达式,并且不区分大小写。

  4、^~:用于不含正则表达式的 uri 前,要求 Nginx 服务器找到标识 uri 和请求字符串匹配度最高的 location 后,立即使用此 location 处理请求,而不再使用 location 块中的正则 uri 和请求字符串做匹配。

  注意:如果 uri 包含正则表达式,则必须要有 ~ 或者 ~* 标识


负载均衡

需求描述:

  输入nginx监听IP:8083,可以一定规则访问真实的IP:8088 tomcat和IP:8089服务;

准备tomcat服务器

  1-准备两个tomcat 8088和8089;分别都可以访问/api/a.html;

配置nginx配置文件

  1-配置ngnix.conf文件

worker_processes  1;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    ##定义负载均衡真实服务器IP:端口号 weight表示权重
    upstream myserver{
        server   49.233.176.26:8088 weight=1;
        server   49.233.176.26:8089 weight=1;
     }
    server {
        listen   8083;
       location / {
            proxy_pass   http://myserver;
            proxy_connect_timeout 10;
        }
    }  

}

测试负载均衡

upsteam参数说明

自定义负载均衡真实服务器信息 IP+端口号以及权重

nginx 分配服务器策略

  第一种 轮询(默认)
    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

  第二种 weight
    weight 代表权重默认为 1,权重越高被分配的客户端越多

upstream server_pool{
    server 192.168.5.21 weight=10;
    server 192.168.5.22 weight=10;
}

  第三种 ip_hash
    每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器(可以解决session问题)

upstream server_pool{
    ip_hash;
    server 192.168.5.21:80;
    server 192.168.5.22:80;
}

  第四种 fair(第三方)
    按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream server_pool{
    server 192.168.5.21:80;
    server 192.168.5.22:80;
    fair;
}

原文地址:https://www.cnblogs.com/wobuchifanqie/p/12242246.html

时间: 2024-08-04 18:31:48

nginx学习3:实现nginx反向代理和负载均衡的相关文章

Nginx安装、性能测试、反向代理、负载均衡实例

一.nginx安装 我使用的环境是64位 Ubuntu 14.04.nginx依赖以下模块: l gzip模块需要 zlib 库 l rewrite模块需要 pcre 库 l ssl 功能需要openssl库 1.1.安装pcre l 获取pcre编译安装包,在http://www.pcre.org/上可以获取当前最新的版本 l 解压缩pcre-xx.tar.gz包. l 进入解压缩目录,执行./configure. l make & make install 1.2.安装openssl l 获

基于nginx和tengine的tcp反向代理,负载均衡 安装和配置

先下载nginx_tcp_proxy_module模块. wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip 先看看自己原来nginx安装有哪些模块(编译参数): [[email protected]]# /tengine/sbin/nginx -VTengine version: Tengine/2.1.1 (nginx/1.6.2)built by gcc 4.4.7 20120313 (Re

nginx 防盗链+动静分离+反向代理+缓存+负载均衡

修改nginx/conf/nginx.conf,修改完后如下: user www www; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default

nginx 防盗链+动静分离+反向代理+缓存+负载均衡 (转发)

修改nginx/conf/nginx.conf,修改完后如下: [php] view plaincopyprint? user  www www; worker_processes  1; #error_log  logs/error.log; #error_log  logs/error.log  notice; #error_log  logs/error.log  info; #pid        logs/nginx.pid; events { worker_connections 

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

相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此处可搭建服务器集群. redis服务器一台,用于session的分离共享. nginx主服务器:192.168.50.133 nginx备服务器:192.168.50.135 tomcat项目服务器1:192.168.50.137 tomcat项目服务器2:192.168.50.139 redis服

nginx反向代理相关 负载均衡

一.反向代理 1.1.upstream简介 nginx的upstream可以同时实现反向代理和负载均衡,目前upstream支持4种方式的分配 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况. 2.ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题. 3.fair(第三方) 按后端服

马哥学习笔记二十八——nginx反向代理,负载均衡,缓存,URL重写及读写分离

Nginx反向代理 Nginx通过proxy模块实现反向代理功能.在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI.客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream server).nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够将location定义的某URI代理至指定的上游服务器(组)上.如下面的示例中,location的/uri将被替换为上游服务器上的/newuri. location /uri { proxy_pa

nginx实现反向代理与负载均衡

nginx在LB Cluster集群中也可以扮演一定的角色,即反向代理与负载均衡.在一个Web服务中,来自客户端的请求可以经由nginx服务器转发至后端服务器,并且按照一定的算法实现负载均衡. 1.反向代理 1)在192.168.10.17/24与192.168.10.77/24主机上安装nginx,提供web服务. 编辑两台主机的主页文件内容分别为 inode17 page 和inode77 page 2)主机172.16.10.66提供nginx的反向代理服务 为了与后端主机进行通信,此主机

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

大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负载均衡 六.Nginx之页面缓存 七.Nginx之URL重写 八.Nginx之读写分离 注,操作系统为 CentOS 6.4 x86_64 , Nginx 是版本是最新版的1.4.2,所以实验用到的软件请点击这里下载:http://yunpan.cn/QXIgqMmVmuZrm 一.前言 在前面的几篇博文中我们主要讲解了Nginx作为Web服务器知识点,主要的知识点有nginx的理论详解.ngin