nginx动态代理,负载均衡学习

1.正向代理与反向代理的区别?

正向代理:是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。正向代理的典型用途为在防火墙内的局域网客户端提供访问Internet的途径.

反向代理:反向代理是代理服务器的一种,服务器根据客户端的请求,从其关联的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址或者域名,而不知道在代理服务器后面的服务器簇的存在.

2.nginx概述

Nginx是一款优秀的反向代理服务器程序,能够为若干台服务器提供反向代理服务,一方面为客户端提供的统一的访问地址,另一方面为后台多个服务器提供了负载均衡的能力。Nginx是目前最主流的反向代理服务器,能够提供可靠的负载均衡、动静分离的能力。
        a. 下载地址
            http://nginx.org/en/download.html
        b. 安装
            将下载好的安装包解压到一个没有中文没有空格的目录下即可。
        c. windows下常用命令
            验证配置是否正确: nginx -t
            查看Nginx的版本号:nginx -V
            启动Nginx:start nginx
            快速停止或关闭Nginx:nginx -s stop
            正常停止或关闭Nginx:nginx -s quit
            配置文件修改重装载命令:nginx -s reload
        d. 配置
            nginx的工作是基于[conf/nginx.conf]配置文件来进行的。
            nginx.conf的配置结构:
                http{ #代表处理http请求
                         #配置一个虚拟服务器
                        server{
                                #此虚拟服务器接收对80端口的访问
                                listen 80;
                                #此虚拟服务器接收对localhost主机名的访问
                                server_name localhost;
                                #当访问/user资源时由此配置处理
                                location /user{
                                        规则
                                }
                                #当访问/order资源时由此配置处理
                                location /order{
                                        规则
                                }
                                ...
                        }

                        #其他Server配置
                        server ...
                        ...
                }

3.nginx案例实现请求转发

通过Nginx实现请求转发,通过配置nginx.conf转发策略,使得本来访问tomcate:8080端口转交由访问nginx:8088端口
        当客户端访问http://www.aaa.com时,由nginx转发给http://127.0.0.1:8080端口进行处理
        配置hosts文件
            127.0.0.1 www.aaa.com
        在nginx.conf中配置
            http{
                    #为nginx配置一个虚拟服务器,
                    server {
                            #监听本机8088端口
                            listen 8088;
                            #接收对www.aaa.com主机名的访问
                            server_name www.aaa.com;
                            #对/即任意路径的访问进行处理
                            location / {
                                    #转发到指定地址,tomcate访问地址
                                    proxy_pass http://127.0.0.1:8080;
                            }
                            #可以配置多个location
                            ...
                    }
                    #可以配置多个server
                    ...
            }
        启动 tomcat
            startup.bat
        启动nginx
            start nginx

4. location路径配置和匹配规则

        a. location路径的写法
        在配置虚拟服务器时,可以配置多个location,指定不同路径采用不同的处理方案,location支持多种写法,规则如下:
        1.  =   =/aaa/1.jpg 路径严格匹配,路径必须一模一样才会匹配到
        2.  ^~  ^~/aaa  只要是指定路径开头的路径都可以匹配
        3.  ~   ~.png$  区分大小写按正则匹配路径
        4.  ~*  ~*.png$ 不区分大小写按正则匹配路径
        5. /    /   通用匹配,所有路径都可以匹配到
        b. location路径配置的优先级
        由于location的路径配置非常灵活,所有有可能一个路径被多个location所匹配,此时按照如下规则判断匹配优先级:
            ? 首先匹配 =
            ? 其次匹配 ^~
            ? 其次是按文件中顺序的正则匹配
            ? 最后是交给 / 通用匹配
            ? 当有匹配成功时候,停止匹配,按当前匹配规则处理请求
            ----总的规律是,精度越高优先级越高
        案例:
        location = / {
                     #规则A
                            }
        location = /login {
                    #规则B
                            }
        location ^~ /static/ {
                     #规则C
                            }
        location ~ \.(gif|jpg|png|js|css)$ {
                    #规则D
                            }
        location ~* \.png$ {
                             #规则E
                        }
        location / {
                             #规则F
                        }
     访问根目录 /, 比如 http://localhost/ 将匹配规则 A
     访问 http://localhost/login 将匹配规则 B
     http://localhost/register 则匹配规则 F
     访问 http://localhost/static/a.html 将匹配规则 C
     访问 http://localhost/a.gif, http://localhost/b.jpg 将匹配规则 D和规则 E,但是规则 D 顺序优先,规则 E不起作用
     http://localhost/static/c.png则优先匹配到规则 C
     访问 http://localhost/a.PNG 则匹配规则 E,而不会匹配规则 D,因为规则 E 不区分大小写
     访问 http://localhost/category/id/1111 则最终匹配到规则 F

5. Ngnix的负载均衡策略

    nginx在分发资源到后端服务器时,如何分配请求是可以配置的,称之为nginx的负载均衡策略。
        轮询  默认不配置就是轮询   连接请求轮流分配给后端服务器
        http{
                    ????????upstream sampleapp {
                    ????????server <<dns entry or IP Address(optional with port)>>;
                            server <<another dns entry or IP Address(optional with port)>>;
                            }
                            ....
                            server{
                            ????????listen 80;
                            ????????...
                            ????????location / {
                            ????????????????proxy_pass http://sampleapp;
                    ????????}
                    }
        ip哈希    ip_hash;    abs(客户端ip.hash())%服务器数量,根据余数决定连接请求去往哪个服务器
        http{
                    ????????upstream sampleapp {
                     ???????ip_hash;
                            server <<dns entry or IP Address(optional with port)>>;
                            server <<another dns entry or IP Address(optional with port)>>;
                    ????????}
                    ????????....
                    ????????server{
                    ????????????????listen 80;
                    ????????????????...
                    ????????????????location / {
                    ????????????????proxy_pass http://sampleapp;
                    ????????}
                    }
        最少连接    least_conn; 将连接请求分配给目前连接数最少的服务器
        http{
                    ????????upstream sampleapp {
                    ????????least_conn;
                    ????????server <<dns entry or IP Address(optional with port)>>;
                    ????????server <<another dns entry or IP Address(optional with port)>>;
                    ????????}
                    ????????....
                    ????????server{
                    ????????????????listen 80;
                    ????????????????...
                    ????????????????location / {
                    ????????????????proxy_pass http://sampleapp;
                    ????????}
                    }
        基于权重    直接在地址后配置weight=x    根据权重进行分配,权重值越大,被分配的连接越多。可以直接配置为down,则不再分配连接。
        http{
                    ????????upstream sampleapp {
                    ????????????????server <<dns entry or IP Address(optional with port)>> weight=2;
                    ????????????????server <<another dns entry or IP Address(optional with port)>> weight=5;
                    ????????????????server <<another dns entry or IP Address(optional with port)>> down;
                    ????????}
                    ????????....
                    ????????server{
                    ????????????????listen 80;
                    ????????????????...
                    ????????????????location / {
                    ????????????????proxy_pass http://sampleapp;
                    ????????}
                    }

7. Nginx的动静分离实现

        a. 动静分离原理
        动 --> 动态资源  --> servlet jsp --> 程序
        静 --> 静态资源 --> jpg mp3 mp4 html css js --> 文件
        tomcat能够处理动态和静态资源,但本质上是为处理动态资源而设计的服务器,过多静态资源交由tomcat管理会降低tomcat处理动态资源的能力,得不偿失。

        nginx本身无法处理动态资源,但可以处理静态资源,而且性能优良。

        因此可以将静态资源和动态资源拆分,将静态资源交由ngin处理,动态资源仍由tomcat处理,从而解放了tomcat对动态资源的处理能力,整体上实现动静分离,提升了效率。
        b. 动静分离实现
        配置方式:
            server {
                    listen 8088;
                    server_name www.aaa.com;
                    location / {
                            #root可以指向nginx服务器中的本地磁盘地址
                            #静态文件就放置在这个磁盘地址中
                            #之后对server中资源的访问会被转换到对本地磁盘资源的访问
                                                #www.aaa.com/aaa/bbb/1.html-->d://html/aaa/bbb/1.html
                            root D://html;
                            #默认访问的首页配置
                            index index.html;
                    }
            }

原文地址:https://blog.51cto.com/12013190/2445180

时间: 2024-10-31 07:22:23

nginx动态代理,负载均衡学习的相关文章

Centos7.4 Nginx反向代理+负载均衡配置

Ningx是一款高性能的HTTP和反向代理服务器,配置起来也比较简单. 测试环境: 172.16.65.190 Nginx-反向代理 172.16.65.191 Ningx-Web 172.16.65.192 Nginx-Web 在三台Server安装Nginx: # yum install -y nginx 在172.16.65.190配置Nginx反向代理+负载均衡: # vim /etc/nginx/nginx.conf user nginx; worker_processes auto;

nginx反向代理负载均衡简述

基于浏览器实现分离案例if ($http_user_agent ~ Firefox) {rewrite ^(.)$ /firefox/$1 break;}if ($http_user_agent ~ MSIE) {rewrite ^(.)$ /msie/$1 break;}if ($http_user_agent ~ Chrome) {rewrite ^(.*)$ /chrome/$1 break;} 防盗链案例:location ~* .(jpg|gif|jpeg|png)$ {valid_r

25,Nginx反向代理负载均衡

1,什么是反向代理1,代理顾名思义就是代理某人去做某事,比如律师代理,中介代理.往往你不能直接自己做的事,都需要找代理 2,为什么要用反向代理1,在没有代理服务器之前,用户访问web服务器是如下图:2,在实际业务生成环境中,比如我们访问web服务器,在用户和服务器直接往往有一台或者多台代理服务器用来转发你的访问请求,代你去访问web服务器,然后将结果返回给用户.当你只有一台web服务器的时候,这种代理看起来其实意义不大,用户直接访问web服务器不是更快?但生产中不仅仅一台web,这个时候用代理来

如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现.它可以让我们更加专注于应用的开发,而不是基础架构.Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置.容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里.在这个教程里我们将会使用 weave 快速并且简单

项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现

实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP:172.17.22.22 后端服务器 stasic-srv 组 rs02 RIP:172.17.1.7 后端服务器 stasic-srv 组 rs01 RIP:172.17.77.77 后端服务器 defautl-srv 组 rs02 RIP:172.17.252.111 后端服务器 defaut

项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现

目录 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 2.下载编译安装tengine 3.设置代理服务器的配置文件 4.启动tengine服务 5.开启后端的web服务 6.测试 实验二:nginx实现缓存功能 1.环境准备:同上实验,实验结构图如下: 2.设置代理服务器的配置文件 3.测试:访问 http://172.17.11.11/ 总项目流程图,详见http://www.cnblogs.com/along21/p/7435612.html 回到顶部 实验一:实现反向代理负载均衡且

Centos 7配置nginx反向代理负载均衡集群

一,实验介绍 利用三台centos7虚拟机搭建简单的nginx反向代理负载集群, 三台虚拟机地址及功能介绍 192.168.2.76    nginx负载均衡器 192.168.2.82    web01服务器 192.168.2.78    web02服务器 二,安装nginx软件(以下操作三台虚拟机都要进行)1,安装依赖软件包命令集合 yum -y install openssl openssl-devel pcre pcre-devel gcc 2,安装nginx软件包命令集合 mkdir

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

Nginx反向代理+负载均衡简单实现

一.基础环境: 负   载  机:A机器: 192.168.71.223后端机器1:B机器:192.168.71.224后端机器2:C机器:192.168.71.226 需求: 1)访问A机器的8080端口,反向代理到B机器的8080端口: 访问A机器的8088端口,反向代理到C机器的8088端口: 访问http://192.168.71.223:8090/ios,反向代理到B机器http://192.168.1.102:8090/ios/ 2)访问A机器的80端口,负载均衡到后端的两台机器B和