MENU

centos下从零配置nginx(负载均衡)

January 11, 2019 • linux运维阅读设置

centos下从零配置nginx(负载均衡)

nginx下载安装

先下载依赖环境,不然装不上
yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

  1. 下载源码包

    `wget -c https://nginx.org/download/nginx-1.12.0.tar.gz`
  2. 解压缩源码

    `tar -zxvf nginx-1.12.0.tar.gz`
  3. 配置,编译安装 开启nginx状态监测功能

    `./configure --prefix=/opt/nginx112/`
    


编译完出线makefile文件就开始make && make install

  1. 启动nginx,进入sbin目录,找到nginx启动命令

    cd sbin
    ./nginx #启动
    ./nginx -s stop #关闭
    ./nginx -s reload #平滑重启 ,修改了nginx.conf之后,可以不重启服务,加载新的配置

  2. 分析nginx的工作目录,内容

    [root@xxy nginx112]# ls
    client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp

    conf 存放nginx的配置文件的

    nginx.conf 这里是控制nginx所有功能的文件

    html 存放网页html的目录

    index.html 

    logs 存放log日志文件

    sbin 存放nginx可执行命令的

    nginx脚本命令
    
    

    #user nobody;nginx的工作进程数,以cpu核数为数量

    cat nginx.conf 核心配置如下

    #定义nginx工作进程数
    worker_processes 5;
    #错误日志

    #error_log logs/error.log;
    #http定义代码主区域
    http {

    include       mime.types;
    default_type  application/octet-stream;
    #定义nginx的访问日志功能
    #nginx会有一个accses.log功能,查看用户访问的记录
    
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    #开启日志功能
    access_log  logs/access.log  main;
    sendfile        on;
    keepalive_timeout  65;
    #开启gzip压缩传输
    gzip  on;
    #虚拟主机1  定义一个 斗鱼网站 
    server {
        #定义nginx的访问入口端口,访问地址是  192.168.11.37:80
        listen       80;
        #定义网站的域名www.woshidouyu.tv
        #如果没有域名,就填写服务器的ip地址  192.168.11.37
        server_name  www.woshidouyu.tv;
        #nginx的url域名匹配
        #只要请求来自于www.woshidouyu.tv/111111111
        #只要请求来自于www.woshidouyu.tv/qweqwewqe
        #只要请求来自于www.woshidouyu.tv/qweqwewqe
        #最低级的匹配,只要来自于www.woshidouyu.tv这个域名,都会走到这个location
        location / {
            #这个root参数,也是关键字,定义网页的根目录
            #以nginx安装的目录为相对路径  /opt/nginx112/html 
            #可以自由修改这个root定义的网页根目录
            root   html;
            #index参数定义网站的首页文件名,默认的文件名
            index  index.html index.htm;
        }
        #错误页面的优化
        error_page  400 401  402  403  404   /40x.html;

    }

    }

nginx多虚拟主机的配置

1. 在nginx.conf中添加两个虚拟主机标签
server{}
配置文件如下
    server {
        listen       80;
        server_name  qishijd.com;
        location / {
            root   /opt/jd;
            index  index.html index.htm;
        }
        error_page  404              /40x.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
server {
listen 80;
server_name  qishitb.com;
location  /  {
root  /opt/tb;
index  index.html;
}
}



2. 重启nginx,加载新的配置
nginx -s stop 
nginx 


3. 修改windows的本地hosts解析文件,用于域名解析

windows的hosts文件路径
C:\Windows\System32\drivers\etc

写入如下配置
192.168.11.37  qishitb.com
192.168.11.37  qishijd.com


4. 准备两个虚拟主机的 index.html文件
/opt/jd/index.html  写入  我是京东
/opt/tb/index.html   写入  我是淘宝


5. 在windows浏览器中,查看两个域名对应到的虚拟主机
分别访问qishijd.com 域名
然后访问qishitb.com 域名,查看网站的资料的内容变化





nginx的错误页面优化的功能:
通过error_page参数定义错误页面的 html文件

 server {
        listen       80;
        server_name  qishijd.com;
        location / {
            root   /opt/jd;
            index  index.html index.htm;
        }
        #这个错误页面就应该存放在 /opt/jd/40x.html 
        error_page  404              /40x.html;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

nginx访问日志功能

配置方式

  1. 修改nginx.conf配置文件,打开如下配置注释

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
              '$status $body_bytes_sent "$http_referer" '
              '"$http_user_agent" "$http_x_forwarded_for"';```
    
     #开启日志功能
    access_log  logs/access.log  main;
    
    
    
    
    nginx拒绝访问功能
    在某一个虚拟主机下,顶一个deny参数,可以拒绝ip地址对虚拟主机的访问
    
  2. {
    listen 80;
    server_name qishijd.com;

       #只要192.168.11.37这个ip访问 qishijd.com/
    

    location / {

    #deny  192.168.11.0/24;
    root   /opt/jd;
    index  index.html index.htm;
    

    }
    error_page 404 /40x.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {

    root   html;
    

    }

    }
    

    nginx的负载均衡

    其实就是压力分担

    1. 集群是什么
      一堆服务器做一件事
    2. 集群性能很高
      淘宝本来的核心支付服务器是小型机,非常昂贵,且难以维护

    后来都讲 服务器更换为集群架构
    一堆便宜的服务器,维护者一个功能运转

    1. 高可用
      单点机器很可能宕机

    集群单机机器宕机,不会影响整体的运转

    nginx负载均衡的配置

1.实验如下
准备三台机器
机器1 nginx负载均衡器(发牌的荷官) 192.168.11.158

nginx.conf配置如下

    #定义nginx负载均衡池,里面默认是轮训算法
    #也可以用weight 权重算法
    #也可以用ip_hash 算法
    
    upstream nginx_pools {
        server  192.168.11.37  weight=10;
        server 192.168.11.167  ;
    }
    server {
        listen       80;
        server_name  192.168.11.158;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        #在这里进行反向代理配置
        #192.168.11.158/
        location / {
        proxy_pass http://nginx_pools;
    }
    }

机器2 准备nginx 返回页面数据 192.168.11.37

nginx.conf配置如下
        server {
            listen       80;
            server_name  192.168.11.37;
            location / {
                root   /opt/jd;
                index  index.html index.htm;
            }
            error_page  404              /40x.html;
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
}

    

机器3 也准备nginx 返回页面数据 192.168.11.167
server {

    listen       80;
    server_name  192.168.11.167;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location / {
        root   html;
        index  index.html index.htm;
    }

2.分别启动三台机器,三个nginx服务

3.在windows中访问负载均衡器的地址,查看请求分发,
访问 192.168.11.158

无标签
最后编辑于: April 2, 2019
Leave a Comment