• 淘宝nginx的学习使用,安装及反向代理,负载均衡


    1.淘宝nginx的学习使用,安装

    下载源码包
    http://tengine.taobao.org/download/tengine-2.2.0.tar.gz

    2.卸载掉之前,学习yum时候,安装的nginx软件,
    yum remove nginx -y 

    3。解决编译安装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

    4.解压缩源码包,安装
    源码编译安装三部曲
    1.释放makefile
    ./configure --prefix=/opt/tnginx220

    2.编译nginx
    make 
    3.编译安装
    make install 

    4.编译完成后,tnginx就可以用了


    学习nginx的代码目录结构
    [root@master tnginx220]# pwd
    /opt/tnginx220
    [root@master tnginx220]#

    [root@master tnginx220]# ll
    total 8
    drwx------. 2 nobody root    6 Mar 11 08:51 client_body_temp
    drwxr-xr-x. 2 root   root 4096 Mar 11 08:50 conf                #放nginx所有配置文件的地儿
    drwx------. 2 nobody root    6 Mar 11 08:51 fastcgi_temp
    drwxr-xr-x. 2 root   root   40 Mar 11 08:50 html                #存放前端 html文件的      
    drwxr-xr-x. 2 root   root 4096 Mar 11 08:50 include
    drwxr-xr-x. 2 root   root   41 Mar 11 08:52 logs                #nginx的日志文件夹
    drwxr-xr-x. 2 root   root    6 Mar 11 08:50 modules
    drwx------. 2 nobody root    6 Mar 11 08:51 proxy_temp
    drwxr-xr-x. 2 root   root   35 Mar 11 08:50 sbin                #存放nginx二进制命令的
    drwx------. 2 nobody root    6 Mar 11 08:51 scgi_temp
    drwx------. 2 nobody root    6 Mar 11 08:51 uwsgi_temp


    5.启动淘宝nginx

    ./nginx 

    6.添加linux的PATH变量,快捷使用nginx命令


    echo $PATH  
    PATH="/opt/python36/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tnginx220/sbin"

    7.学习nginx的主配置文件nginx.conf 

    http内核模块

    //公共的配置定义在http{}

    http {  //http层开始
    ...    
        //使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
        'server' {
            listen       80;        //监听端口, 默认80
            server_name  localhost; //提供服务的域名或主机名
            access_log host.access.log  //访问日志
            //控制网站访问路径
            'location' / {
                root   /usr/share/nginx/html;   //存放网站代码路径
                index  index.html index.htm;    //服务器返回的默认页面文件
            }
            //指定错误代码, 统一定义错误页面, 错误代码重定向到新的Locaiton
            error_page   500 502 503 504  /50x.html;
        }
        ...
        //第二个虚拟主机配置
        'server' {
        ...
        }
        
        include /etc/nginx/conf.d/*.conf;  //包含/etc/nginx/conf.d/目录下所有以.conf结尾的文件
    
    }   //http层结束

    8.基于域名的多虚拟主机实战
    (一个服务器上,可以运行两个乃至多个网站)


        1。环境准备,准备好2个域名 ,这里是模拟的本地域名解析 ,找到hosts文件     
        由于我们是想配置windows,可以访问不同的  域名,因此配置windows的hosts
        
          编辑文件 C:WindowsSystem32driversetchosts
        写入
    192.168.11.229  s17dnf.com 
    192.168.11.229  s17xiaohua.com
        
        
    9.配置nginx支持多虚拟主机

    修改nginx.conf 修改2个server虚拟主机的配置

    #dnf的虚拟主机
    server {
        listen 80;
        server_name  s17dnf.com;
        # 当我们访问s17dnf.com:80/的时候,就进入这个虚拟主机,且找到这个location,进行网站资源分配
        location / {
            root /opt/s17dnf/;
            index index.html;
        }
    }


    #第二个虚拟主机,s17校花网
    server{
        listen 80;
        server_name  s17xiaohua.com;
        
        location / {
            root /opt/s17xiaohua/;
            index index.html;
        }

    }

    分别修改两个网址的根目录数据
    mkdir -p /opt/{s17dnf,s17xiaohua}

    分别在/opt/s17dnf/创建index.html 
    /opt/s17xiaohua/创建index.html  


    10.修改完配置文件,检测语法
    nginx -t  

    11。平滑加载nginx(不重启nginx,重新读取配置文件)
    nginx -s reload  

    12.nginx的访问日志功能 
    编辑 nginx.conf  
    打开注释

    http {
        include       mime.types;
        default_type  application/octet-stream;

        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;

        
    13.网站的404页面优化

    编辑nginx.conf  ,配置如下


        server {
            listen       80;
            server_name  s17dnf.com;

            #charset koi8-r;

            #access_log  logs/host.access.log  main;

            location / {
                root   /opt/s17dnf;
                index  index.html index.htm;
            }
            #打开这个参数的配置,开启错误页面  
            error_page  404           /404.html;
            error_page  401            /401.html;
            
           
    }

    14.拒绝ip访问
      location / {
                deny  你想限制的ip;
                root   /opt/s17dnf;
                index  index.html index.htm;
            }


    15.nginx的反向代理

    生活中的代理

    我们百姓     ->         房屋中介   ->     房东 


    百姓      ->    黄牛手里有票        ->  12306的火车票,卖完了

    浏览器客户端              ->   nginx  这个代理     ->   django  

    浏览器  ->        django  

    16.nginx反向代理的实现


        1.实验环境准备
        192.168.11.229   真实资源服务器,模拟django       ,理解为房东的房屋资源 
        
        192.168.11.136   nginx代理服务器                 ,理解为 房屋中介  
        
        2.思路
        我们作为客户端,访问 代理服务器,  ,代理服务器,将资源服务器上的东西,进行返回
        
        
        3.配置 资源服务器  192.168.11.229  s17dnf.com   
        
        4.配置代理服务器   192.168.11.136     
        修改192.168.11.136这台机器的nginx配置文件,开启反向代理
        配置nginx.conf的server{}如下
        
            server {
                listen       80 default_server;
                listen       [::]:80 default_server;
                server_name  _;
                

              
                location / {
                #反向代理参数,当我们请求192.168.11.136:80/的时候,进入这里server,然后location进行资源分配 
                    proxy_pass   http://192.168.11.229;     #就是间接的访问了 192.168.11.229:80/
                }

           } 
            
        
        

    17.nginx负载均衡是发送给一组服务器池

    思路介绍:

    #定义一个负载均价池
    upstream  myserver  {
    server   192.168.11.229;
    server   192.168.11.xx;  

    }


    #通过反向代理转发

                server {
                listen       80 default_server;
                listen       [::]:80 default_server;
                server_name  _;
                

              
                location / {
                #反向代理参数,当我们请求192.168.11.136:80/的时候,进入这里server,然后location进行资源分配 
                    proxy_pass   myserver;     #就是间接的访问了 192.168.11.229:80/
                }

           } 
            
        
    18.配置nginx负载均衡
    环境准备,三台服务器
    三台机器都是通过nginx实现的 

    192.168.11.136  反向代理服务器  

    192.168.11.229   资源服务器1    这个机器是返回的dnf页面 

    192.168.11.176   资源服务器2    这个配置的是 index.html  来了老弟


    1.配置反向代理服务器 192.168.11.136


    修改nginx.conf如下参数
    #定义负载均衡池 
    upstream s17server {
    server 192.168.11.229;
    server 192.168.11.176;
    }

            #转发请求给负载均衡池
            location / {
                proxy_pass   http://s17server;
            }


            
    2.此时通过负载均衡器  192.168.11.136,进行访问测试,默认是轮询机制


    3.nginx负载均衡算法

    调度算法      概述
    轮询        按时间顺序逐一分配到不同的后端服务器(默认)
    weight       加权轮询,weight值越大,分配到的访问几率越高
            upstream s17server {
        server 192.168.11.229 weight=8;
        server 192.168.11.176 weight=2;
        }


    ip_hash      每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
    url_hash      按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
    least_conn    最少链接数,那个机器链接数少就分发
     

  • 相关阅读:
    限制浏览器回退
    thinkphp R方法传参
    MYSQL优化学习总结
    mysql安全小结
    深度解析PHP数组函数array_slice
    深度解析PHP数组函数array_chunk
    深度解析PHP数组函数array_combine
    深度解析PHP数组函数array_merge
    并发编程学习笔记(二十一、ArrayBlockingQueue、LinkedBlockingQueue源码分析)
    并发编程学习笔记(二十、CyclicBarrier源码分析)
  • 原文地址:https://www.cnblogs.com/Wj-Li/p/10864906.html
Copyright © 2020-2023  润新知