精华内容
下载资源
问答
  • Nginx 负载均衡和反向代理配置优化 DNS 轮询方式: 介绍: DNS 轮询是指一个域名可以绑定到多个的 ip 服务器上, 用户在访问的时候 dns轮询访问这几个 ip 的服务器, 达到负载均衡的目的. 可以使用 linux 命令 dig ...
  • nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。
  • nginx 负载均衡和反向代理

    万次阅读 2012-09-08 15:02:06
    反向代理 代理服务器将接收到的用户请求转发给内部服务器,再将内部服务器返回的结果返回给用户,此时代理服务器就充当一个服务器的角色。 实例 在配置文件里写上如下的代码: upstream backend { server

    负载均衡

    将用户的请求均匀的或者按照一定的优先级分配到一组服务器中的一台上,而接收到请求的服务器独立的处理请求并返回。负载均衡技术主要用于扩展后端服务的性能。

    反向代理

    代理服务器将接收到的用户请求转发给内部服务器,再将内部服务器返回的结果返回给用户,此时代理服务器就充当一个服务器的角色。

    实例

    在配置文件里写上如下的代码:

    upstream backend {
        server 192.168.43.158:8086 weight=4 max_fails=2 fail_timeout=30s;  
        server 192.168.41.167 weight=4 max_fails=2 fail_timeout=30s; 
        server unix:/tmp/backends weight=4 max_fails=2 fail_timeout=30s;
    }
    server {
        listen 80 ;
        server_name frontend.com;
        location = / {
            proxy_pass http://backend;
            proxy_set_header Host backend.com;
            proxy_set_header Forwarded $remote_addr;
        }
    }

    proxy_pass用于指定反向代理的upstream服务器集群,proxy_set_header用于添加指定的头信息,这里向header里添加了host信息,用于当后端服务器上有多个基于域名的虚拟主机时,host可以指定要访问哪一个虚拟主机,同时也添加了forwarded信息,用于告诉后端服务器终端用户的ip地址,否则后端服务器只能获取前端代理服务器的ip地址。

    Upstream 模块

    nginx 利用 upstream 模块来实现负载均衡,并且该模块还可以对后端服务器进行健康检查。

    • ip_hash指令

    ip_hash 指令可以将某个客户端的请求通过ip hash算法定位到同一台后端服务器上,这样就能保证客户端的请求能一直被定向到一台后端服务器上,否则就会随机被定向到不同的后端服务器上。

    ip_hash 的缺点就是无法保证后端服务器的负载均衡,因为ip的不均匀导致有可能有的后端服务器接收的请求多,而且即使设置后端服务器的权重也不起作用。

    如果某个后端服务器要从nginx负载均衡中摘除一段时间,必须将其标记为“down”,而不是直接从配置文件中删掉或者注释掉。代码如下:

    upstream backend {
        ip_hash;
        server backend1.com;
        server backend2.com;
        server backend3.com;
        server backend4.com down;
    }   

    如果直接将backend4.com从配置文件中删除的话,nginx就会按照3台后端服务器重新hash,原来定向到backend1的用户就有可能重新定向到backend2,这样backend1上的用户数据就会失效,比如SESSION数据。

    • server指令

    该指令用于指定后端服务器的名称和参数,服务器的名称可以是一个域名,一个ip,端口号或者unix scoket。

    参数主要有:

    weight,设置后端服务器的权重,权重越高,被分配到的客户端请求数越多。如果没有设置权重,则权重值默认为1;

    max_fails,指定在参数 fail_timeout 时间内后端服务器请求失败的次数,如果检测到后端服务器无法连接或者服务器内部错误,则标记失败,默认值为1,设置为0将会关闭这项检查;

    fail_timeout,在指定的时间内如果失败次数到达max_fails时,后端服务器将会暂停服务的时间;

    down,标记服务器为永久离线状态,仅用于ip_hash指令;

    backup,仅仅在非backup服务器全部宕机或繁忙的时候才启用。

    • upstream 相关变量

    当要使用日志来记录upstream服务器状态的时候,可以在log_format中使用相关的变量,比如:

    $upstream_addr:表示处理请求的upstream中的服务器地址;

    $upstream_status:表示upstream服务器的应对状态;

    $upstream_response_time:upstream服务的响应时间(毫秒);

    $upstream_http_$HEADER:任意的http协议头信息,例如:$upstream_http_host。

    实例如下:

    upstream backend {
        server 172.28.0.21:80 max_fails=3 fail_timeout=10s;
        server 172.28.0.14:80 max_fails=3 fail_timeout=10s;
    }
    server {
        listen 8360 ;
        server_name ${DOMAIN};
        location = / {
            proxy_pass http://backend;
            proxy_set_header Host ${DOMAIN};
            proxy_set_header Forwarded $remote_addr;
        }
        log_format up '$upstream_addr $upstream_status $upstream_response_time $upstream_http_host';
        access_log  access.log up;
    }
    access.log中的内容如下:
    172.28.0.14:80, 172.28.0.21:80 502, 200 0.000, 0.050 -
    172.28.0.14:80, 172.28.0.21:80 502, 200 0.001, 0.007 -
    172.28.0.14:80, 172.28.0.21:80 502, 200 0.001, 0.007 -
    172.28.0.21:80 200 0.007 -
    172.28.0.21:80 200 0.006 -
    172.28.0.21:80 200 0.007 -
    172.28.0.14:80, 172.28.0.21:80 502, 200 0.001, 0.007 -

    可以看见日志内容主要有三段,第一段有三次访问,其中14机器返回502,21机器返回200,三次访问过后14机器停止了服务,过了10秒再次访问,14机器开始提供服务,不过返回状态仍然是502.

    展开全文
  • 本文介绍一些负载均衡和反向代理的一些基本概念,然后介绍如何基于nginx实现,包括两种安装nginx的方法:yum安装源码安装,以及ngix该如何配置等。 什么是负载均衡? 概念 负载均衡是高可用网络基础架构的关键...

    本文介绍一些负载均衡和反向代理的一些基本概念,然后介绍如何基于nginx实现,包括两种安装nginx的方法:yum安装和源码安装,以及ngix该如何配置等。

    什么是负载均衡?

    概念

    负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。

    常用的负载均衡算法

    负载均衡算法决定了后端的哪些健康服务器会被选中。几个常用的算法:

    1. Round Robin(轮询):为第一个请求选择列表中的第一个服务器,然后按顺序向下移动列表直到结尾,然后循环。
    2. Least Connections(最小连接):优先选择连接数最少的服务器,在普遍会话较长的情况下推荐使用。
    3. Source:根据请求源的 IP 的散列(hash)来选择要转发的服务器。这种方式可以一定程度上保证特定用户能连接到相同的服务器。如果你的应用需要处理状态而要求用户能连接到和之前相同的服务器。可以通过 Source 算法基于客户端的 IP 信息创建关联,或者使用粘性会话(sticky sessions)。

    Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略为轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。扩展策略举例: fair,根据服务器的响应时间来分配请求,响应时间短的优先分配,即负载压力小的优先会分配。fair源码

    参见:什么是负载均衡?
    Nginx负载均衡配置

    什么是反向代理?

     

    正向代理

    正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端。正向代理的情况下客户端必须要进行一些特别的设置才能使用。

    反向代理

    反向代理正好相反。对于客户端来说,反向代理就好像目标服务器。并且客户端不需要进行任何设置。客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端,使得这些内容就好似他自己一样,一次客户端并不会感知到反向代理后面的服务,也因此不需要客户端做任何设置,只需要把反向代理服务器当成真正的服务器就好了。

    参照:正向代理与反向代理的区别

    nginx 安装

    通过yum 源安装

    配置yum源

    1. 首先修改公司的yum源配置, cd /etc/yum.repos.d/ ,修改CentOS-7.6-Base.repo 。
    2. 除此之外,在安装epel 源。(extra package for enterprise linux, 为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS等,
      里面有1万多个软件,强烈建议安装) yum install epel-release
      如果epel无法安装,请参见:yum安装epel源
    3. 添加Nginx仓库
      vim /etc/yum.repos.d/nginx.repo
      输入下面内容
      [nginx]
      name=nginx repo
      baseurl=http://nginx.org/packages/centos/7/$basearch/
      gpgcheck=0
      enabled=1
    4. 安装:yum install nginx 。 使用 yum 安装是在线安装,但是版本可能不是最新,如果需要最新版本的话,还是需要源码安装。
    5. 启动Nginx
      systemctl start nginx
      或者 进入/usr/sbin,执行
      ./nginx
      或者执行
      service nginx start
    6. 测试页面
      http://127.0.0.1/ 如果页面没有出来,查看防火墙配置
      vi /etc/sysconfig/iptables   添加下面内容
      -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙) 
      -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(mysql端口  允许3306端口通过防火墙)
      然后重启防火墙:service iptables restart
    7. 把Nginx加到系统启动项,这样每次开机的时候就自动启动了,使用下面的命令:
      systemctl enable nginx

    参照:Linux(Centos7)yum安装Nginx

    通过源码安装

    1. 安装前工作首先更新系统软件源,使用以下命令更新系统: yum update

    有关两个命令的一点解释:

    > 1. yum -y update - 升级所有包,改变软件设置和系统设置,系统版本内核都升级。

    > 2. yum -y upgrade - 升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变。

    2. 依赖包安装

    [root@localhost src]# yum -y install gcc gcc-c++ autoconf automake libtool make cmake[root@localhost src]# yum -y install zlib zlib-devel openssl openssl-devel pcre-devel

    3. 下载Nginx安装源文件

    http://nginx.org/en/download.html nginx-1.10.2.tar.gz

    4. 新建nginx用户及用户组

    用 root 用户身份登录系统,执行以下命令创建新的用户。

    [root@localhost src]# groupadd nginx
    [root@localhost src]# useradd -g nginx -M nginx

     

    1. useradd命令的-M参数用于不为nginx建立home目录

    1. 修改/etc/passwd,使得nginx用户无法bash登陆(nginx用户后面由/bin/bash改为/sbin/nologin)
    2. vi /etc/passwd然后找到有 nginx 那一行,把它修改为(后面由/bin/bash改为/sbin/nologin):
      例如:nginx..1002:1003::/home/nginx:/sbin/nologin

    5. 配置、编译、安装

    下面我们进入解压的nginx源码目录:/usr/local/src/ 执行以下命令

    [root@localhost ~]# cd /usr/local/src/nginx*
    [root@localhost nginx-1.10.3]# pwd
    /usr/local/src/nginx-1.10.3
    [root@localhost nginx-1.10.3]#
    [root@localhost nginx-1.10.3]# ./configure --prefix=/usr/local/nginx \
    --pid-path=/usr/local/nginx/run/nginx.pid \
    --with-http_ssl_module \
    --user=nginx \
     --group=nginx \
    --with-pcre \
    --without-mail_pop3_module \
    --without-mail_imap_module \
    --without-mail_smtp_module
    
    --prefix=/usr/local/nginx 指定安装到 /usr/local/nginx 目录下。
    上面配置完成后,接下来执行编译 
    
    [root@localhost nginx-1.10.3]# make
    [root@localhost nginx-1.10.3]# make install
    
    查看安装后的程序版本:
    [root@localhost nginx-1.10.3]# /usr/local/nginx/sbin/nginx -v
    nginx version: nginx/1.10.3

    注意:上面的反斜杠 表示换行继续。

    6. 启动、停止

    nginx 管理的几种方式:

    6.1 启动Nginx

    /usr/local/nginx/sbin/nginx

    6.2 从容停止Nginx:

    kill -QUIT 主进程号 # 如上一步中的 ps 命令输出的 29151,就是 Nginx的主进程号

    6.3 快速停止Nginx:

    kill -TERM 主进程号

    6.4 强制停止Nginx:

    pkill -9 nginx

    6.5 平滑重启nginx

    /usr/nginx/sbin/nginx -s reload

    参照:Nginx安装

    两者安装的不同

    1. yum 安装是在线安装,好处是:安装方式简单,不易出错;
      源码包 安装是先将 nginx 的源码下载下来,在自己的系统里编译生成可执行文件,然后执行,
      好处是:因为是在自己的系统上编译的,更符合自己系统的性能,也就是说在自己的系统上执行 nginx 服务性能效率更好。
    2. 安装路径不同
      通过源码包编译安装的软件,通常都放在 /usr/local/包名 路径下。
      通过源码安装,可以自己指定安装路径。
    3. 启动方式不同
      yum 安装 nginx,我们可以通过 系统服务命令 service 来启动或停止
      service nginx start #启动 nginx 服务
      service nginx stop #停止 nginx 服务
      service nginx restart #重启 nginx 服务
      源码包 安装 nginx 启动的时候不能使用 service 来启动,需要执行 nginx 安装目录下的 sbin 目录下的 nginx 可执行程序才行,
      如下(我的 nginx 安装在 /usr/local/webserver/ 目录下)
      ➜ ~ /usr/local/webserver/nginx/sbin/nginx #启动 nginx 服务
      ➜ ~ /usr/local/webserver/nginx/sbin/nginx -s stop #停止 nginx 服务

    参照:nginx服务器详细安装过程(使用yum 和 源码包两种安装方式,并说明其区别)

    nginx 配置解析

    nginx 配置结构

    ...              #全局块
    
    events {         #events块
       ...
    }
    
    http      #http块
    {
        ...   #http全局块
        server        #server块
        { 
            ...       #server全局块
            location [PATTERN]   #location块
            {
                ...
            }
            location [PATTERN] 
            {
                ...
            }
        }
        server
        {
          ...
        }
        ...     #http全局块
    }

    nginx 配置详解

    
    ########### 每个指令必须有分号结束。#################
    #user administrator administrators;  #配置用户或者组,默认为nobody nobody。
    #worker_processes 2;  #允许生成的进程数,默认为1
    #pid /nginx/pid/nginx.pid;   #指定nginx进程运行文件存放地址
    error_log log/error.log debug;  #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
    events {
        accept_mutex on;   #设置网路连接序列化,防止惊群现象发生,默认为on
        multi_accept on;  #设置一个进程是否同时接受多个网络连接,默认为off
        #use epoll;      #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
        worker_connections  1024;    #最大连接数,默认为512
    }
    http {
        include       mime.types;   #文件扩展名与文件类型映射表
        default_type  application/octet-stream; #默认文件类型,默认为text/plain
        #access_log off; #取消服务日志    
        log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
        access_log log/access.log myFormat;  #combined为日志格式的默认值
        sendfile on;   #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
        sendfile_max_chunk 100k;  #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
        keepalive_timeout 65;  #连接超时时间,默认为75s,可以在http,server,location块。
    
        upstream mysvr {   
          server 127.0.0.1:7878;
          server 192.168.10.121:3333 backup;  #热备
        }
        error_page 404 https://www.baidu.com; #错误页
        server {
            keepalive_requests 120; #单连接请求上限次数。
            listen       4545;   #监听端口
            server_name  127.0.0.1;   #监听地址       
            location  ~*^.+$ {       #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
               #root path;  #根目录
               #index vv.txt;  #设置默认页
               proxy_pass  http://mysvr;  #请求转向mysvr 定义的服务器列表
               deny 127.0.0.1;  #拒绝的ip
               allow 172.18.5.54; #允许的ip           
            } 
        }
    }

     

    几个常见配置项:

    1. $remoteaddr 与 $httpxforwardedfor 用以记录客户端的ip地址;
    2. $remote_user :用来记录客户端用户名称;
    3. $time_local : 用来记录访问时间与时区;
    4. $request : 用来记录请求的url与http协议;
    5. $status : 用来记录请求状态;成功是200;
    6. $bodybytess ent :记录发送给客户端文件主体内容大小;
    7. $http_referer :用来记录从那个页面链接访问过来的;
    8. $httpuseragent :记录客户端浏览器的相关信息;

    其他说明

    1. 惊群现象:一个网路连接到来,多个睡眠的进程被同时叫醒,但只有一个进程能获得链接,这样会影响系统性能。
    2. 每个指令必须有分号结束。

    ------

    参见:

    Nginx反向代理以及负载均衡配置

    【nginx】配置Nginx实现负载均衡

    Nginx 配置详解

    展开全文
  • 1 修改centos命令行启动减少内存占用 2安装jdk 3安装tomcat 4安装nginx 5配置虚拟主机 ...3nginx负载均衡环境测试 1: 修改centos命令行启动(减少内存占用): vim /etc/inittab id:...

    1: 修改centos命令行启动(减少内存占用):

    vim /etc/inittab     id:5:initdefault:  --> 修改5为3  
    若要界面启动使用 startx
    

    2:安装jdk

    1)解压:jdk-7u55-linux-i586.tar.gz
           [root@localhost jdk]# tar -zxvf jdk-7u55-linux-i586.tar.gz 
    2)复制:[root@localhost jdk]# cp -rf jdk1.7.0_55/ /usr/local/jdk
      授权:[root@localhost jdk]# cd /usr/local/jdk
           [root@localhost jdk]# chmod u+x jdk/
    3)配置环境;[root@localhost bin]# vim /etc/profile
      最后面插入:export JAVA_HOME=/usr/local/jdk/jdk1.7.0_79
                export PATH=$JAVA_HOME/bin:$PATH
    4)刷新配置文件:source /etc/profile
    
        验证:java   javac
    

    3:安装tomcat

        1)解压:tar -zxvf
        2)授权:chmod u+x/usr/local/tomcats/tomcat1/apache-tomcat-7.0.47/bin
        3)启动:进入tomcat目录bin 目录后: ./startup.sh 
        4)开放端口:vim  /etc/sysconfig/iptables
        5)关闭防火墙:chkconfig iptables off
        6)重启防火墙: service iptables restart
        7)修改端口号:vim conf/server.xml
        8)查看进程:ps aux | grep tomcat
    

    4:安装nginx

        1)安装环境:  
                  yum -y install gcc-c++
                  yum -y install pcre pcre-devel
                  yum -y install zlib zlib-devel
                  yum -y install openssl openssl-devel
    
        2)解压:tar -zxvf nginx-1.8.0.tar.gz 
    
        3)创建安装目录:[root@localhost local]# mkdir -p nginx
                      [root@localhost local]# cd nginx/
                      [root@localhost nginx]# pwd
                        /usr/local/nginx
    
        4)创建临时目录:var]# mkdir -p temp/nginx
        5)进入目录:cd nginx-1.8.0/  
        6)修改参数: 
    
                ./configure \
                --prefix=/usr/local/nginx \
                --pid-path=/var/run/nginx/nginx.pid \
                --lock-path=/var/lock/nginx.lock \
                --error-log-path=/var/log/nginx/error.log \
                --http-log-path=/var/log/nginx/access.log \
                --with-http_gzip_static_module \
                --http-client-body-temp-path=/var/temp/nginx/client \
                --http-proxy-temp-path=/var/temp/nginx/proxy \
                --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
                --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
                --http-scgi-temp-path=/var/temp/nginx/scgi
    
        7)编译安装:
            make
            make install
    
        8)启动: cd /usr/local/nginx/sbin/
             ./nginx 
        9)查看进程:ps aux | grep nginx
        10)快速停止:./nginx -s stop
        11)完整停止:./nginx  -s quit  此方式停止步骤是待nginx进程处理任务完毕进行停止。推荐使用
        12)重启: ./nginx -s quit
                ./nginx  
        13)重新加载配置文件: ./nginx -s reload
    

    5:配置虚拟主机:

        1、nginx支持的三种虚拟主机的配置:
                基于ip的虚拟主机
                基于域名的虚拟主机
                基于端口的虚拟主机
    
        2、nginx配置文件的结构: 每个service就是一个虚拟主机
    
    ......
                events{
                    ......
                }
    
                http{
                    .......
                    server{
                        ......
                    }
    
                    server{
                        ......
                    }
                }
    
        3、基于ip的虚拟主机配置:
            修改配置文件: vim /usr/local/nginx/nginx-1.8.0/conf/nginx.conf 
    
     server{ 
                    listen 80;
                    server_name 192.168.31.88;
    
                    location / {
                        root html;
                        index index.html index.htm;
                    }
                }
        4、基于域名的虚拟主机配置:
            修改配置文件:vim /usr/local/nginx/nginx-1.8.0/conf/nginx.conf
    
    server{ 
                    listen 80;
                    server_name www.nginxdns1.com;
    
                    location / {
                        root html_dns1;
                        index index.html index.htm;
                    }
                }
    
                server{ 
                    listen 80;
                    server_name www.nginxdns2.com;
    
                    location / {
                        root html_dns2;
                        index index.html index.htm;
                    }
                }
    
        5、基于端口的虚拟主机配置:
            修改配置文件:vim /usr/local/nginx/nginx-1.8.0/conf/nginx.conf
    
            监听端口:netstat -an | grep 80
    
               server{ 
                    listen 88;
                    server_name 192.168.31.88;
    
                    location / {
                        root html_port1;
                        index index.html index.htm;
                    }
                }
    
                server{ 
                    listen 89;
                    server_name 192.168.31.88;
    
                    location / {
                        root html_port2;
                        index index.html index.htm;
                    }
                }
    

    6、nginx 反向代理:

    修改hosts:# nginx反向代理环境测试
                192.168.31.88 www.nginxproxy1.com
                192.168.31.88 www.nginxproxy2.com
    
    开启不同虚拟机中的两台tomcat:192.168.31.88:8080 和 192.168.31.89:8081
    修改配置文件:
    
                #代理tomcat1服务器 
                upstream  tomcat_server1{
                    server  192.168.31.89:8081;
                }
    
                #代理tomcat2服务器
                upstream tomcat_server2{
                    server 192.168.31.88:8080;
                }
    
                #配置虚拟主机:
                server{ 
                    listen 80;
                    server_name www.nginxproxy1.com;
    
                    location / {
                        #root html_port1;
    
                        proxy_pass http://tomcat_server1;
                        index index.html index.htm;
                    }
                }
    
                server{ 
                    listen 80;
                    server_name www.nginxproxy2.com;
    
                    location / {
                        #root html_port2;
                        proxy_pass http://tomcat_server2;
                        index index.html index.htm;
                    }
                }
    

    7、nginx 负载均衡:

        修改hosts :# nginx负载均衡环境测试
                     192.168.31.88 www.nginxbalance.com
    
        开启不同虚拟机中的两台tomcat:192.168.31.88:8080 和 192.168.31.89:8081
        修改配置文件:
    
                #代理tomcat2服务器
                upstream tomcat_server_pool{
                    server 192.168.31.88:8080 weight=1;
                    server 192.168.31.89:8081 weight=1;
                }
    
                #配置虚拟主机:
                server{ 
                    listen 80;
                    server_name www.nginxbalance.com;
    
                    location / {
                        #root html_port1;
    
                        proxy_pass http://tomcat_server_pool;
                        index index.html index.htm;
                    }
                }
    

    hosts文件配置:

    1:nginx基于域名环境测试

    192.168.31.88 www.nginxdns1.com
    192.168.31.88 www.nginxdns2.com

    2:nginx反向代理环境测试

    192.168.31.88 www.nginxproxy1.com
    192.168.31.88 www.nginxproxy2.com

    3:nginx负载均衡环境测试

    192.168.31.88 www.nginxbalance.com

    展开全文
  • nginx负载均衡和反向代理跨域

    千次阅读 2018-08-29 21:14:00
    proxy_pass可以很方便的进行反向代理,然后配合upstream可以很方便的实现负载均衡。  在nginx的根路径下的conf文件夹下的nginx.conf就是我们需要关注的配置文件。  1. proxy_pass 在server下listen指定了服务器...

      nginx是一个高性能的Http服务器,有两个默认的模块proxy_pass和upstream。proxy_pass可以很方便的进行反向代理,然后配合upstream可以很方便的实现负载均衡。

       在nginx的根路径下的conf文件夹下的nginx.conf就是我们需要关注的配置文件。

     1. proxy_pass

    在server下listen指定了服务器的断开,server_name指定了域名,location过滤访问的请求,proxy_pass设置了一个url,意思就是当前反向代理的目标服务器地址。

        所以当我们在本地访问http://localhost:4444的时候,nginx会将我们的请求反向代理到proxy_pass指定的目标服务器。

     2.upstream

        上面的请求都会反向代理到proxy_pass设置的目标服务器上,但如果目标服务器宕机了怎么办?这个时候我们可以设置负责均衡,upstream就可以派上用场了。

        upstream可以设置多台服务器,然后通过proxy_pass指向upstream,从而当我们访问http://localhost:4444的时候,就反向代理到了upstream中的某一台服务器中了。

        而具体是反向代理到upstream中的哪一台服务器,我么可以设置对应的算法。

        i).默认是采用轮询机制,就是采用轮询的方式反向代理;

        ii).设置权重weight,我们可以通过设置weight来指定服务器被访问的权重,权重越大,反向代理过去的机会就越大;

        iii). ip_hash的方式:因为每一个ip对应一个唯一的hash值,这样来自同一个ip的请求会反向代理到特定的某一台机器上。

    3.跨域

          前端跨域有很多方式,比如JSONP,服务端代理和html5的access-control-allow-orgin等。但这一一些方式都需要根据需要修改相关的前端或者后端代码。但nginx跨域不需要修改任何代码。

        从上面我们知道,nginx的proxy_pass可以将我们的请求通过proxy_pass反向代理到目标服务器上,nginx跨域就是利用反向代理来实现。比如我们需要访问某个后端api,假设它的地址是http:://xxxxx/api/myrequest,并且后端api的地址都是以http;//xxxxx/api开头。因为使用ajax直接访问该地址肯定存在跨域问题,那么如何配置nginx的配置文件呢?

        只增加一个对应的location去过滤请求,然后进行反向代理,我们捕捉所有以/api开头的请求。

        有两种方式:

        i. 方式一:

    location /api/ {
                
            proxy_pass http://xxxxx/api;
    }
       ii. 方式二:

    location /api/ {
                
            proxy_pass http://xxxxx/api/;
    }

        方式二比方式一多了一个/。

        区别就是:

        方式一: 如果用户访问的是http://?????/api/getInfo,反向代理到的是http://xxxxx/api/getInfo

        方式二: 如果用户访问的是http://?????/api/getInfo,反向代理到的是http://xxxxx/getInfo

    这样就达到了跨域了

     

    展开全文
  • Nginx负载均衡反向代理
  • Nginx负载均衡和反向代理Nginx负载均衡和反向代理Nginx负载均衡和反向代理Nginx负载均衡和反向代理Nginx负载均衡和反向代理
  • 文件中包含了nginx在win7系统64位的安装包,对应的负载均衡反向代理源码
  • nginx 负载均衡 反向代理 nginx 负载均衡 反向代理 nginx 负载均衡 反向代理
  • 教程视频:Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务
  • 涉及的是Nginx反向代理和负载均衡的更为高级的用法。主要包含:HTTP负载均衡,HTTP长连接,TCP和UDP的负载均衡,上游连接数限制,最短时间的均衡算法,Session一致性,实时健康检查,DNS重解析,访问控制,客户端...
  • nginx配置负载均衡和反向代理示例
  • nginx完整的反向代理代码如下所示 : [root@data conf]# vim nginx.conf user www www; worker_processes 10; error_log /var/log/nginx/nginx_error.log; pid logs/nginx.pid; worker_rlimit_nofile 65535 ...
  • nginx负载均衡和反向代理的demo,springboot版本,访问ip即可在页面展示服务器的ip端口。
  • Nginx负载均衡的理解 Nginx是一个轻量级的、高性能的WebServer,他主要可以干下面两件事: 作为http服务器(apache的效果一样) 作为反向代理服务器实现负载均衡 现在Nginx到处都可以见到,经常会看到宕机后的网页...
  • 这里写目录标题nginx负载nginx反向代理准备环境源码安装nginx修改负载均衡和方向代理安装httpd nginx负载 俄罗斯人开发的一个高性能的 HTTP和反向代理服务器。由于Nginx 超越 Apache 的高性能稳定性,使得国内使用...
  • 负载均衡的原理IIS下实现负载均衡IIS+Nginx实现负载均衡反向代理什么是反向代理Nginx反向代理如何用IIS+Nginx实现反向代理总结 IIS下的负载均衡 我们的网站为什么要负载均衡? 因为在网站的创立初期,我们一般都...
  • 在业界,一直流传这样一句话:Nginx抗并发能力强!为什么Nginx抗并发能力强?原因是使用了异步传输,非阻塞。1 . 阻塞与非阻塞 ,同步与异步阻塞:如apache代理...非阻塞:如nginx代理tomcat时,nginx开启1000个并发,
  • 本篇摘自《亿级流量网站架构核心技术》第二章 Nginx负载均衡反向代理 部分内容。  当我们的应用单实例不能支撑用户请求时,此时就需要扩容,从一台服务器扩容到两台、几十台、几百台。然而,用户访问时是通过如...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,453
精华内容 24,181
关键字:

nginx负载均衡和反向代理