Nginx服务器的安装与反向代理负载均衡

Nginx服务器

一:什么是Nginx?

我们生活的世界中,有的时候需要上网。我们可以浏览很多很多的网页,这些网页都是由一系列的程序组成,但是我们是否想过,这些程序存储在什么地方呢?没错,这些程序都是存储在一种名叫服务器的硬件上,比如我们的电脑也是一种服务器,只不过我们的个人电脑作为服务器的话性能会比较低。我们的网页程序存储在服务器硬件上,是否可以随意存储呢?不是的,我们需要在服务器硬件的操作系统中搭建一个服务器软件,那么这样,有服务器软件跟服务器硬件配合,才形成一个完整的服务器。服务器软件有非常多,比如Apache、tomcat等等都是服务器软件,而我们今天要学习的Nginx也是一种服务器软件之一。

Nginx是一种服务器软件,故而其最主要、最基本的功能当然是可以与服务器硬件结合,让程序员可以将程序放在Nginx服务器上,将程序发布出去,让成千上万的网民可以浏览。除此之外,Nginx是一种高性能的HTTP和反向代理服务器,同时也是一个代理邮件服务器。也就是说,我们Nginx上可以发布网站,也可以实现负载均衡的功能,还可以作为邮件服务器实现收发邮件等功能。所谓的负载均衡是指,当同时有N多用户访问我们服务器的时候,为了减少服务器压力,我们需要将用户分别引入各服务器,分担服务器的压力。

什么是Nginx — Nginx与其他服努器的性能比较

首先说IIS, IIS服务器只能在Windows上运行,Windows服务器性能不如Linux— 类服务器。其次说Tomcat,Tomcat服务器面向的是Java语言,是一种重量级的服 务器,而Nginx是轻量级服务器,Tomcat与Nginx不具备可比性。最后,我们讲一 下Apache,Apache优点非常多,比如稳定、幵源、跨平台等等,但是Apache不支 持高并发。Nginx能支持处理百万级的TCP连接,10万以上的并发连接,并且是一 个很好的跨平台服务器。

Nginx的主要优点有可以实现高并发、部署简单、内存消耗少、成本低等等。

Nginx的主要缺点有rewrite功能不够强大,模块没有Apache的多。

二:如何在Linux中搭建Nginx服务器?

先不要创建/usr/local/nginx目录,因为安装成功后会自动创建。

在Linux终端输入命令行的主要步骤:

下载
wget http://nginx.org/download/nginx-1.14.0.tar.gz
解压
tar -zxvf nginx-1.14.0.tar.gz
安装
./configure

如果安装错误,提示需要其它环境,请参考下面

安装 make

yum -y install gcc automake autoconf libtool make

安装 g++

yum install gcc gcc-c++

安装 PCRE库

yum -y install pcre pcre-devel

安装 Zlib

yum -y install zlib zlib-devel

如果./configure安装成功,只需要再执行两个命令:

make
make install

查看是否安装成功

cd /usr/local/nginx

如果安装成功,则会出现下列目录:

conf  html  logs  sbin

切换到sbin目录

cd /sbin

启动程序

./nginx

常见的错误

在Linux操作系统下搭建Nginx服务器,很多时候会出现不同的错误,在此,我们对搭建过程中出现的错误进行一些总结。主要有这些类型:

防火墙问题,缺少gc++,缺少pcre、zlib等库。

三:Nginx的反向代理和负载均衡

什么是反向代理

我们有时候,用自己的计算机A想访问国外的某个网站B,但是访问不了,此时,有一台中间服务器C可以访问国外的网站B,那么,我们可以用自己的电脑访问服务器C,通过C来访问B这个网站。那么这个时候,服务器C称为代理服务器,这种访问方式叫做正向代理。正向代理有一个特点,就是我们明确知道要访问哪个网站。再如,当我们有一个服务器集中,并且服务器集群中的每台服务器的内容一样的时候,同样我们要直接从个人电脑访问到服务器集中的服务器的时候无法访问,且此时第三方服务器能访问集群,这个时候,我扪通过第三方服务器访问服务器集群的内容,但是此吋我们并不知道是哪一台服务器提供的内容,此时的代理方式称为反向代理。

正向代理

反向代理

什么是负载均衡

当一台服务器的单位时间内的访问量越大的时候,服务器的压力会越大。当一台服务器压力大得超过自身的承受能力的时候,服务器会崩溃。为了避免服务器崩溃,让用户有更好地体验,我们通常通过负载均衡的方式来分担服务器的压力。那么什么是负载均衡呢?是这样,我们可以建立很多很多个服务器,这些服务器组成一个服务器集群,然后,当用户访问我们网站的时候,先访问一个中间服务器,再让这个中间服务器在服务器集群中选择一个压力较小的服务器,然后将该访问请求引入该选择的服务器。这样,用户的每次访问,都会保证服务器集群中的每个服务器的压力趋于平衡,分担了服务器压力,避免了服务器崩溃的情况。

基于反向代理的原理实现负载均衡

四:Nginx负载均衡的实现

Nginx 是一款可以通过反向代理实现负载均衡的服务器,使用 Nginx 服务实现负载均衡的时候,用户的访问首先会访问到 Nginx 服务器,然后 Nginx 服务器再从服务器集群表中选择压力较小的服务器,然后将该访问请求引向该服务器。若服务器集群中的某个服务器崩溃,那么从待选服务器列表中将该服务器删除,也就是说一个服务器假如崩溃了,那么 Nginx 就肯定不会将访问请求引入该服务器了。那么下面,我们通过实例来讲解一下 Nginx 负载均衡的实现。

负载均衡配置文件

默认配置文件nginx.conf 很重要,我们一般是新建一个配置文件,在启动时指定加载。

[[email protected] conf]# ls  //查看目录
fastcgi.conf            koi-win             scgi_params
fastcgi.conf.default    mime.types          scgi_params.default
fastcgi_params          mime.types.default  uwsgi_params
fastcgi_params.default  nginx.conf          uwsgi_params.default
koi-utf                 nginx.conf.default  win-utf
[[email protected] conf]# touch fzjh.conf  //新建负载均衡配置文件

编辑fzjh.conf配置文件

vi fzjh.conf
worker_processes  1;#工作进程的个数,一般与计算机的cpu核数一致  

events {
    worker_connections  1024;#单个进程最大连接数(最大连接数=连接数*进程数) 并发
}  

http {
    include       mime.types; #文件扩展名与文件类型映射表
    default_type  application/octet-stream;#默认文件类型  

    sendfile        on;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。  

    keepalive_timeout  65; #长连接超时时间,单位是秒  

    gzip  on;#启用Gizp压缩  

    #服务器的集群
    upstream  myproject {  #服务器集群名字
        server    220.181.111.188:80  weight=1;#服务器配置   weight是权重的意思,权重越大,分配的概率越大。
        server    42.121.252.58:80  weight=2;
    }     

    #当前的Nginx的配置
    server {
        listen       80;  #监听80端口,可以改成其他端口
        server_name  localhost; ##############   当前服务的域名  

        location / {  ##配置路径/下实现负载均衡
            proxy_pass http://myproject;  ##对应哪个服务器集群
            proxy_redirect default;
        }  

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
           root   html;  #根目录
        }
    }
}  

我们在nginx目录下执行命令,启动负载均衡

./sbin/nginx -c ./conf/fzjh.conf

然后尝试访问你的服务器,多访问几次,你会发现它会访问2次csdn网站,1次百度。说明我们的负载均衡已经部署完毕。

如何关闭Nginx服务器

1.查看nginx进程号

ps -ef|grep nginx

2.kill掉进程即可 (1709是第二列的进程号)

kill 1709

或者

killall -9 nginx

五:HTTP Upstream 模块

HTTP Upstream 模块

Upstream 模块是 Nginx 服务器的一个重要模块。 Upstream 模块实现在轮询和客户端 iP 之间实现后端的负载均衡。常用的指令有 ip_hash指令、 server 指令和 upstream 指令等,下面我们分别来讲一下。

Http Upstream模块- ip_hash指令

在负载均衡系统中,假如用户在某台服务器上登录,那么如果该用户第二次请求的时候,因为我们是负载均衡系统,每次请求都会重新定位到服务器集群中的一个服务器,那么此时如果将已经登录服务器A的用户再定位到其他服务器,显然不妥。故而,我们可以采用 ip_hash指令解决这个问题,如果客户端请求已经访问了服务器A并登录,那么第二次请求的时候,会将该请求通过哈希算法自动定位到该后端服务器中。下面我们通过实例讲解。

实例

此时不应该使用weight权重。


http {
     ....
    upstream  myproject {
        ip_hash; #实现会话跟踪
        server 140.205.140.234;
        server 61.135.169.125;

    }
   ....
} 

Http Upstream 模块一 upstream 指令及相关变量

upstream 指令主要是用于设置一组可以在 proxy_pass 和 fastcgi_pass 指令中使用代理服务器,默认负载均衡方式为轮询。

六:其他负载均衡实现方式

负载均衡的实现方法除了可以使用 Nginx服务器实现外,还可以通过很多种方法来实现。负载均衡的核心就是建立一个服务器集群,然后用户首先访问到第三方代理服务器,然后由代理服务器选择一个集群中的服务器,然后将请求引入选定的服务器。那么代理服务器可以使用多种方式来充当,故而实现负载均衡的方式也是多种。总的来说,负载均衡实现的方式分为软件实现和硬件实现两种,如果中间的代理机构是硬件,那么就是通过硬件设备来实现负载均衡的方式,如果中间的代理机构为软件,就是软件实现负载均衡的方式。而其中,软件又可以是服务器软件、系统软件以及应用软件等充当。

负载均衡实现方式小结

下面我们简单总结一下负载均衡不同实现方式的优缺点:

假如使用硬件的方式实现负载均衡,那么中间的转发机构就是硬件,这个时候运行的效率非常高,但是对应的成本也非常高。如果我们采用软件的方式来实现负载均衡,那么中间的转发机构就是软件,这个时候,运行效率不如硬件,但是成本相对来说低得多。而使用Nginx服务器实现负载均衡,那么就是通过软件的方式来实现负载均衡,并且 Nginx本身支持高并发等。故而使用 Nginx服务器实现负载均衡,能大大节约企业的成本,并且由于 Nginx是服务器软件,其执行效率也是非常高。

七:location匹配顺序

  1. "="前缀指令匹配,如果匹配成功,则停止其他匹配
  2. 普通字符串指令匹配,顺序是从长到短,匹配成功的location如果使用^~,则停止其他匹配(正则匹配)
  3. 正则表达式指令匹配,按照配置文件里的顺序,成功就停止其他匹配
  4. 如果第三步中有匹配成功,则使用该结果,否则使用第二步结果

注意点

  1. 匹配的顺序是先匹配普通字符串,然后再匹配正则表达式。另外普通字符串匹配顺序是根据配置中字符长度从长到短,也就是说使用普通字符串配置的location顺序是无关紧要的,反正最后nginx会根据配置的长短来进行匹配,但是需要注意的是正则表达式按照配置文件里的顺序测试。找到第一个比配的正则表达式将停止搜索。
  2. 一般情况下,匹配成功了普通字符串location后还会进行正则表达式location匹配。有两种方法改变这种行为,其一就是使用“=”前缀,这时执行的是严格匹配,并且匹配成功后立即停止其他匹配,同时处理这个请求;另外一种就是使用“^~”前缀,如果把这个前缀用于一个常规字符串那么告诉nginx 如果路径匹配那么不测试正则表达式。

匹配模式及顺序

  location = /uri    =开头表示精确匹配,只有完全匹配上才能生效。

  location ^~ /uri   ^~ 开头对URL路径进行前缀匹配,并且在正则之前。

  location ~ pattern  ~开头表示区分大小写的正则匹配。

  location ~* pattern  ~*开头表示不区分大小写的正则匹配。

  location /uri     不带任何修饰符,也表示前缀匹配,但是在正则匹配之后。

  location /      通用匹配,任何未匹配到其它location的请求都会匹配到,相当于switch中的default。

原文地址:https://www.cnblogs.com/yueshutong/p/9459585.html

时间: 2024-10-08 00:00:22

Nginx服务器的安装与反向代理负载均衡的相关文章

编译安装nginx并实现反向代理负载均衡和缓存功能

一.编译安装nginx 1.下载 [[email protected] ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2.解压 [[email protected] ~]# tar xf nginx-1.10.0.tar.gz [[email protected] ~]# cd nginx-1.10.0 3.安装依赖组件 [[email protected] nginx-1.10.0]# yum install pcre-devel

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

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

Nginx安装-反向代理-负载均衡-动静分离

安装 1.需要素材 后两个用命令下载安装 openssl-1.0.1t.tar.gzzlib -1.2.8.tar.gz 2:在/usr/src/ 下吧 " nginx-1.16.1.tar.gz " "pcre-8.37.tar.gz" 这两个文件放进去并且解压然后在pcre-8.37这个文件下先 : ./configure 在敲 make && make install pcre-conffig --verison 查看版本 下面安装nginx

Nginx实现反向代理负载均衡与静态缓存

介绍: Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器.在连接高并发的情况下,Nginx是Apache服务器不错的替代品,能够支持高达50000个并发连接数的响应. 实验环境: Hostname IP 系统 规划 n2.preferred 192.168.1.2 Centos 6.5 Web server n3.preferred 192.168.1.3 Centos 6.5 Web server n6.preferred 192.168.1.6

反向代理负载均衡-----nginx

一:集群 1.1:集群的概念 集群是一组相互独立的.通过高速网络互联的计算机,他们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高高可用和可伸缩性.和传统的高性能计算机技术相比,集群技术可以利用各档次的服务器作为节点,系统造价低,可以实现很高的运算速度,完成大运算量的计算,具有较高的响应能力,能够满足当今日益增长的信息服务的需求.而集群技术是一种通用的技术,其目的是为了解决单机运算能力不足.IO能力的不足,提高服务的可靠性.获得规模

反向代理负载均衡之nginx

一.集群 1.1 什么是集群 集群是一组相互独立的.通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理.一个客户与集群相互作用时,集群像是一个独立的服务器.集群配置是用于提高可用性和可缩放性. 和传统的高性能计算机技术相比,集群技术可以利用各档次的服务器作为节点,系统造价低,可以实现很高的运算速度,完成大运算量的计算,具有较高的响应能力,能够满足当今日益增长的信息服务的需求. 而集群技术是一种通用的技术,其目的是为了解决单机运算能力的不足.IO能力的不足.提高服务的可靠性.获

项目实战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 回到顶部 实验一:实现反向代理负载均衡且

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;