您的位置:时时app平台注册网站 > 时时app平台注册网站 > nginx施工方案【时时app平台注册网站】

nginx施工方案【时时app平台注册网站】

2019-11-21 02:50

3.2 安装PCRE

PCRE 作用是让 Nginx 支持 Rewrite 功能。
下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

解压安装包

tar zxvf pcre-8.35.tar.gz

进入安装包目录

cd pcre-8.35

编译安装

./configure
make && make install

查看pcre版本

 pcre-config --version

若有版本显示,表明安装成功

nginx负载均衡配置

4.2 events模块

events模块来用指定nginx的工作模式和工作模式及连接数上限,一般是这样

events {
    use kqueue; #用来指定Nginx的工作模式
    #指定Nginx的单个进程的最大连接数,即接收到的前端的最大请求数,默认为1024
    worker_connections  1024;
}

配置负责均衡

在反向代理的基础上进行负载均衡配置,添加upstream模块

upstream test.net{
    ip_hash; ## 调度算法
    server 192.168.10.13:80; 服务列表
    server 192.168.10.14:80  down;
    server 192.168.10.15:8009  max_fails=3      fail_timeout=20s;
    server 192.168.10.16:8080;
}
  • upstream 支持的负载均衡算法

Nginx的负载均衡模块目前支持4种调度算法,下面进行分别介绍,其中后两项属于第三方调度算法。

轮询(默认)。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。

Weight 指定轮询权值,Weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。

ip_hash。每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。

fair。这是比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

url_hash。此方法按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx 的hash软件包。

  • upstream 支持的状态参数

在HTTP Upstream模块中,可以通过server指令指定后端服务器的IP地址和端口,同时还可以设定每个后端服务器在负载均衡调度中的状态。常用的状态有:

down,表示当前的server暂时不参与负载均衡。
backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

注,当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。

  • 配置负载均衡
root@0334777e7f92:/etc/nginx/conf.d# vim default.conf
upstream webservers {
      server web1;
      server web2;
  }
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/log/host.access.log  main;

    location / {
       # root   /usr/share/nginx/html;
       # index  index.html index.htm;
        proxy_pass      http://webservers;
        proxy_set_header  X-Real-IP  $remote_addr;
    }

时时app平台注册网站 1

负载均衡配置

验证nginx配置文件是否正确

root@0334777e7f92:/etc/nginx/conf.d# nginx -t

重新加载nginx配置文件

root@0334777e7f92:/etc/nginx/conf.d# service nginx reload

访问Qd机,刷新页面,将会轮训分不到其他服务机上

nginx解决方案

配置环境

本地配置三台docker容器分别命名为web1、web2、和Qd(前端机),web1、web2担任web服务器,Qd担负前端负责均衡前端机负责分发请求。

时时app平台注册网站 2

拓扑图

3.nginx安装

在/usr/local/src下进行,否则后面会编译错误

反向代理配置

修改nginx配置文件

时时app平台注册网站 3

配置文件

配置文件中的web1为host名,已添加到host中

location / {
      proxy_pass      http://web1; // 代理地址
       }

验证nginx配置文件是否正确

root@0334777e7f92:/etc/nginx/conf.d# nginx -t

重新加载nginx配置文件

root@0334777e7f92:/etc/nginx/conf.d# service nginx reload

访问Qd机的nginx服务,将被跳转到web1服务器上

4.nginx的配置

nginx的配置文件在/usr/local/webserver/nginx/conf/nginx.conf下,我们只要修改nginx.conf的内容就可以修改Nginx的配置

配置文件的格式如下

main # 全局设置
events { # Nginx工作模式
    ....
}
http { # http设置
    ....
    upstream myproject { # 负载均衡服务器设置
        .....
    }
    server  { # 主机设置
        ....
        location { # URL匹配
            ....
        }
    }
    server  {
        ....
        location {
            ....
        }
    }
    ....
}

4.3.2 server模块

server模块是http的子模块,它用来定一个虚拟主机,它的基本配置如下

server {
    #指定虚拟主机的服务端口
    listen 8080;
    #用来指定IP地址或者域名,多个域名之间用空格分开。
    server_name localhost 123.206.117.62 www.test.com;
    # 全局定义,如果都是这一个目录,这样定义最简单。
    root   /Users/marscheng/www; #示在这整个server虚拟主机内,全部的root web根目录。注意要和locate {}下面定义的区分开来。
    index  index.php index.html index.htm; #全局定义访问的默认首页地址。注意要和locate {}下面定义的区分开来。
    charset utf-8;#网页的默认编码格式
    #用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式
    access_log  usr/local/var/log/host.access.log  main;
    #错误日志文件
    error_log  usr/local/var/log/host.error.log  error;
    #用于定位的配置
    location / {
          ....  
        }

}

location模块

location模块一般是在server中定义的,它在Nginx中用的最多,无论是负载均衡、反向代理还是虚拟域名,都跟它的配置有关。

location是用来定位,解析url,定位URL,所以,它也提供了强大的正则匹配功能,也支持条件判断匹配,用户可以通过location指令实现Nginx对动态、静态网页进行过滤处理。

  1. 设定默认首页和虚拟机目录
location / {
  #指令用于指定访问根目录时,虚拟主机的web目录,这个目录可以是相对路径(相对路径是相对于nginx的安装目录)。也可以是绝对路径。
  root   /Users/marscheng/www;
  #用于设定我们只输入域名后访问的默认首页地址,有个先后顺序:index.php index.html index.htm,如果没有开启目录浏览权限,又找不到这些默认首页,就会报403错误。
  index  index.jsp index.html index.htm;
}
  1. 用正则表达式匹配
location ~ .html$ { #匹配.html结尾的URL,用来解析html文件。里面的root也是一样,用来表示虚拟主机的根目录。
  root           /Users/marscheng/www;
  fastcgi_pass   127.0.0.1:9000;
  fastcgi_index  index.html;
  include        fastcgi.conf;
}

这里只是简单介绍,详细的配置可以参考这篇文章:

网上还有一篇介绍Nginx比较好的,文章,地址如下:

1.方案场景

现有多台应用服务器,要实现所有的访问先访问到反向代理服务器上再转内部对应的应用。

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。简而言之就是隐藏所有的服务器,与之相对的是正向代理,如我们常用的vpn,目的是隐藏访问客户端。

我们在这里打算采用Nginx作为方向代理的服务器

3.1 安装编译工具和库文件

yum -y install make zlib zlib-devel gcc-c   libtool  openssl openssl-devel

3.3 安装Nginx

下载 Nginx,下载地址:

wget http://nginx.org/download/nginx-1.6.2.tar.gz

解压安装包

tar zxvf nginx-1.6.2.tar.gz

进入安装包目录

 cd nginx-1.6.2

编译安装

./configure --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make
make isntall

注意,编译安装的路径要按照实际安装的路径来,本次是在/usr/local/src下

查看nginx版本

/usr/local/webserver/nginx/sbin/nginx -v

若有版本显示,表明安装成功

2.什么是nginx

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

4.3.1 upstream模块

upstream主要负责负载均衡,通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。

upstream test.com{
    ip_hash;
    server 123.206.117.62:80;
    server 123.206.117.62:80 down;
    server 123.206.117.62:8080  max_fails=3  fail_timeout=20s;
    server 123.206.117.62:8080;
}
  • 上面的代码,test.com是upstream指定的负载均衡器的名称,这个名称可以任意指定,在后面需要的地方直接调用即可。

  • ip_hash这是其中的一种负载均衡调度算法,Nginx的负载均衡模块目前支持4种调度算法:

    1. weight 轮询(默认)。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端某台服务器宕机,故障系统被自动剔除,使用户访问不受影响。weight。指定轮询权值,weight值越大,分配到的访问机率越高,主要用于后端每个服务器性能不均的情况下。

    2. ip_hash。每个请求按访问IP的hash结果分配,这样来自同一个IP的访客固定访问一个后端服务器,有效解决了动态网页存在的session共享问题。

    3. fair(第三方)。比上面两个更加智能的负载均衡算法。此种算法可以依据页面大小和加载时间长短智能地进行负载均衡,也就是根据后端服务器的响应时间来分配请求,响应时间短的优先分配。Nginx本身是不支持fair的,如果需要使用这种调度算法,必须下载Nginx的upstream_fair模块。

    4. url_hash(第三方)。按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身是不支持url_hash的,如果需要使用这种调度算法,必须安装Nginx的hash软件包。

  • server指定的是各种服务器,包括服务器的ip、端口以及每个后端服务器在负载均衡中的状态,常用的状态有:
  1. down,表示当前的server暂时不参与负载均衡。
  2. backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  3. max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  4. fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

注意:当负载调度算法为ip_hash时,后端服务器在负载均衡调度中的状态不能是weight和backup。其它情况可以是weight,表示负载的权重,默认为1,weight越大,权重越大。

5.方案设计

根据场景设计了如下的配置方案:

http {
    #此处省略一些基本配置

    upstream product_server{
        server 9.236.2.35:8081;
    }

    upstream admin_server{
        server 9.236.2.36:8082;
    }

    upstream finance_server{
        server 9.236.2.37:8083;
    }

    server {
        #此处省略一些基本配置
        #根据不同正则匹配默认指向不同的的server
        location / {
            proxy_pass http://product_server;
        }

        location /product/{
            proxy_pass http://product_server;
        }

        location /admin/ {
            proxy_pass http://admin_server;
        }

        location /finance/ {
            proxy_pass http://finance_server;
        }
    }
}

4.3 http模块

http是Nginx的核心模块,它负责http服务器相关属性的配置,里面的server和upstream子模块至关重要,我们在设置方向代理、负债均衡以及虚拟目录等的时候,就是依赖于这两个模块的配置

http {
     #设定mime类型,类型由mime.type文件定义
    include       /etc/nginx/mime.types;
    #设定了默认的类型为二进制流,也就是当文件类型未定义时使用这种方式
    default_type  application/octet-stream;

    #用于设置日志的格式,和记录哪些参数,这里设置为main,刚好用于access_log来纪录这种类型。
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    #设定日志文件,后面的main是日志的格式样式,对应于log_format的main。
    access_log    /var/log/nginx/access.log main;

    #用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞。
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    #设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。
    keepalive_timeout 10;

    #设定负载均衡的服务器列表
    upstream load_balance_server {
        ......
    }

   #HTTP服务器
   server {
       ......
    }
}

4.1 main模块

main区域是一个全局设置

#user 来指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行。
user  nobody;
#指定了Nginx要开启的子进程数。每个Nginx进程平均耗费10M~12M内存。根据经验,一般指定1个进程就足够了,如果是多核CPU,建议指定和CPU的数量一样的进程数即可。我这里写2,那么就会开启2个子进程,总共3个进程。
worker_processes  1;

#error_log 来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
error_log  logs/error.log;
error_log  logs/error.log  notice;
error_log  logs/error.log  info;
#pid 来指定进程id的存储文件位置。
pid        logs/nginx.pid;

本文由时时app平台注册网站发布于时时app平台注册网站,转载请注明出处:nginx施工方案【时时app平台注册网站】

关键词: