• linux下安装nginx(编译安装)及反向代理及负载均衡


    首先卸载掉之前用yum命令下载的nginx

    yum remove nginx
    

    安装nginx需要的依赖库

    yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
    

    下载安装nginx源码包

    cd /opt
    wget -c https://nginx.org/download/nginx-1.16.0.tar.gz
    

    解压缩源码(还是在/opt目录下)

    tar -zxvf nginx-1.16.0.tar.gz
    

    释放编译文件 开启nginx状态监测功能

    cd /opt/nginx-1.16.0
    ./configure --prefix=/opt/nginx116 --with-http_ssl_module --with-http_stub_status_module
    

    编译安装

    make && make install
    

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

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

    查看nginx运行状态

    查看端口是否运行: netstat -tunlp
    查看进程是否运行: ps -ef | grep nginx
    

    nginx目录下的文件

    conf 存放nginx所有配置文件的目录,主要nginx.conf
    html 存放nginx默认站点的目录,如index.html、error.html等
    logs 存放nginx默认日志的目录,如error.log access.log
    sbin 存放nginx主命令的目录,sbin/nginx
    

    nginx.conf配置文件解析

    注意: 在修改配置文件之前,最好是把配置文件备份一份!!!!!

    #定义nginx工作进程数
    worker_processes  5;
    
    #连接数
    events {
          worker_connections 1024;
    }
    
    #错误日志
    #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;
    
        #server就是虚拟主机 比如定义一个斗鱼网站
        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这个域名,都会走到这个location
            location / { #网站的根目录
                #这个root参数,也是关键字,定义网页的根目录
                #以nginx安装的目录为相对路径  /opt/nginx116/html 
                #可以自由修改这个root定义的网页根目录
                root   html; #网站服务器的根目录
                #index参数定义网站的首页文件名,默认的文件名
                index  index.html index.htm;
            }
            #错误页面的优化(只要是遇到前面4系列的错误,就会直接跳转到相对目录下的40x.html页面)
            error_page  400 401  402  403  404   /40x.html;
            error_pag 500 502 503 504 /50x.html;
            location = /50x.html{  #http://www.woshidouyu.tv/50x.html
                root html; #网站服务器的根目录
          }
        }
    }
    

    nginx启动出现错误的情况

    如果你在平滑重启nginx时出现以下情况的话,说明你的nginx没有启动 解决方案:

    # 只需要将nginx启动起来即可
    /opt/nginx116/sbin/nginx
    

    nginx错误页面

    配置nginx错误页面

    vim /opt/nginx116/conf/nginx.conf
    修改server代码块
        server {
            listen       80;
            server_name  www.qishihuya.com;
    
            location / {
                root   /opt/www/qishihuya;
                index  index.html index.htm;
            }
            #error_page   500 502 503 504  /50x.html;
            error_page   400 402 403 404  /40x.html;
            location = /40x.html {
                root   html;
            }
        }
    
    平滑重启nginx
    /opt/nginx112/sbin/nginx -s reload
    

    nginx错误页面优化

    打开百度或其他网站,随便输入一个不存在的链接,就可以访问到错误页面
    右键点击页面空白处,查看网页源代码
    拷贝源代码,粘贴到/opt/nginx112/html/40x.html下面去
    再访问我们的网站,随便输入一个不存在的链接, 就可以访问到这个错误页面
    http://192.168.1.40/asldfjasd
    

    nginx访问日志功能

    nginx限制网站来源IP访问

    如果想要在本地访问一个域名, 可以更改本机hosts文件

    windows下
    
    c:\windowssystem32driversetchosts
    
    linux下
    
    /etc/hosts
    

    nginx状态检测功能

    在虎牙或者其他server代码块添加以下配置

    location /status {
        # 开启nginx状态检测功能
        stub_status on;
    }
    

    平滑重启nginx

    /opt/nginx166/sbin/nginx -s reload
    

    配置nginx多虚拟主机

    效果: (1) 访问三个不同的域名,显示三个不同的网站

    (2) 三个网站互不影响

    修改配置文件

     worker_processes  5;
    
    #error_log  logs/error.log;
    
    events {
       worker_connections 1024;
    }
    
    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;
        sendfile        on;
        keepalive_timeout  65;
        #gzip  on;
        # 配置多个server即可,并且修改server_name,以及不同网站的根目录及index.html页面
        server {
            listen       80;
            server_name  www.douyu.top;
            
            location / {
                root   /opt/web_server/douyu;  #前提需要创建好目录,并且在目录下创建一个index.html文件,并将代码写入
                index  index.html index.htm;
            }
            #error_page  404              /404.html;
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }   
        }   
        server {
            listen 80;
            server_name www.huya.top;
            location /{ 
                root /opt/web_server/huya; #前提需要创建好目录,并且在目录下创建一个index.html文件,并将代码写入
                index index.html;
            }   
        }   
        server {
            listen 80;
            server_name www.zhanqi.top;
            location /{ 
                root /opt/web_server/zhanqi; #前提需要创建好目录,并且在目录下创建一个index.html文件,并将代码写入
                index index.html;
            }   
        }   
    
    }
    
    

    在服务器上创建三个目录

    cd /opt
    rm -rf web_server
    mkdir -p web_server/huya
    mkdir -p web_server/douyu
    mkdir -p web_server/zhanqi
    touch web_server/huya/index.html
    touch web_server/huya/index.html
    touch web_server/huya/index.html
    分别打开这三个index.html文件
    vim index.html
    分别添加三个直播网站的源代码内容
    然后保存退出
    

    修改本机hosts文件

    c:\windowssystem32driversetchosts
    

    添加以下三行解析记录

    10.0.3.156 www.huya.top
    10.0.3.156 www.zhanqi.top
    10.0.3.156 www.douyu.top
    

    平滑重启nginx

    /opt/nginx196/sbin/nginx -s reload
    

    网站访问

    浏览器上直接输入 www.huya.top 即可看到页面
    浏览器上直接输入 www.zhanqi.top 即可看到页面
    浏览器上直接输入 www.douyu.top 即可看到页面
    

    Nginx代理功能

    实现一个反向代理

    实验效果

    在windows中访问代理服务器,然后让代理服务器去拿web服务器的数据
    
    请求数据: windows   ——>   10.0.3.156(假如公网IPwww.qishi8huya.com)   ——>   10.0.3.2(由它返回数据)
    返回数据: windows   <——   10.0.3.156   <——   10.0.3.2
    
    机器准备,两台服务器
    
    反向代理服务器   10.0.3.156
    
    淘宝服务器  10.0.3.2
    

    修改代理服务器10.0.3.156的配置文件

    vim /opt/nginx116/conf/nginx.conf
    在location代码块下添加一行数据
    proxy_pass http://10.0.3.2:8060;
    

    重启代理服务器的nginx

    /opt/nginx196/sbin/nginx -s reload
    

    访问代理服务器的IP: 192.168.12.139

    访问的结果是192.168.12.200返回的数据即可
    

    Nginx负载均衡

    负载均衡原理

    配置负载均衡服务器

    有三台机器 一台为nginx代理服务器(负载均衡调度器), 另外两台为WEB服务器

    10.0.3.156    # 负载均衡调度器
    10.0.3.2    # WEB服务器1
    10.0.3.212    # WEB服务器2
    相当于就是当用户访问10.0.3.156时会返回10.0.3.2服务器上的数据,某天当web服务器1挂掉了,那么用户再次访问10.0.3.156时则会返回10.0.3.212服务器上的数据,因为这两台服务器返回的数据都是相同的,这就是高可用性。
    

    完成效果 用户访问10.0.3.156,由nginx代理服务器通过负载均衡调度器分别分配到两个WEB服务器,实现负载均衡 准备三台机器

    10.0.3.156    # 负载均衡调度器
    10.0.3.2    # WEB服务器1
    10.0.3.212    # WEB服务器2
    

    两个WEB服务器可以正常访问

    访问web服务器1返回“代噶好,我系帅帅刘 我真的是1.40这台机器”
    访问web服务器2返回“MMP 我TM是文龙”
    

    在nginx代理服务器(负载均衡调度器)上面做如下配置:

    # 在http代码块里面,添加配置
    upstream qishi8_pool {
    	server 10.0.3.2:8060;
    	server 10.0.3.212;
    }
    
    在location代码块内,添加
    location / {
        proxy_pass http://qishi8_pool; #改成跟上面一样的
        root   html;
        index  index.html index.htm;
    }
    

    分别平滑重启三台机器的nginx服务

    /opt/nginx196/sbin/nginx -s reload
    

    访问10.0.3.156就可以看到,WEB1和WEB2交替返回数据

    配置权重 在upstream里面配置weight的数值,可以调整服务器的请求权重

    可以通过以下几种方式进行权重的配置

    调度算法      概述
    轮询        按时间顺序逐一分配到不同的后端服务器(默认)
    weight       加权轮询,weight值越大,分配到的访问几率越高
    ip_hash      每个请求按访问IP的hash结果分配,这样来自同一IP的固定访问一个后端服务器
    url_hash      按照访问URL的hash结果来分配请求,是每个URL定向到同一个后端服务器
    least_conn    最少链接数,那个机器链接数少就分发
    

    -------------------------------------------

    个性签名:代码过万,键盘敲烂!!!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    filter和listener
    JSP、EL和JSTL
    cookie和session
    xml添加约束和解析
    测试用例设计的原则是什么?目前主要的测试用例设计方法有哪些?
    您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
    HttpWatch
    URL
    什么是渲染引擎
    一份测试计划应该包括哪些内容?
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/13910908.html
Copyright © 2020-2023  润新知