Nginx

  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。

其占用内存少,并发能力强,专为性能优化二开发,在高连接并打的情况下能支持高达50000个并打连接数的响应,并且支持热部署,可以再不间断服务的情况下,对软件版本进行升级。

1.应用场景

  1. http服务器: Nginx是一个http服务可以独立提供http服务。可以做网页静态服务器。

  2. 虚拟主机: 可以实现在一台服务器虚拟出多个网站。例如个人网站使用的虚拟主机。

  3. 反向代理,负载均衡 : 当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要用多台服务器集群可以使用nginx做反向代理。并且多台服务器可以平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况。

2.Nginx安装

在Linux系统下安装,Nginx是C语言编写的,所以需要配置C语言编译环境 (一定要在联网状态下安装)

yum在锁定状态中,强制关掉yum进程即可
rm -f /var/run/yum.pid
需要安装gcc的环境
yum install gcc-c++
  • 安装第三方开发包
    • PCRE:nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库
    • zlib:nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库
    • opensslOpenSSL 是一个强大的安全套接字层密码库,nginx不仅支持http协议,还支持https,所以需要在linux安装openssl库
      yum install -y pcre pcre-devel
      yum install -y zlib zlib-devel
      yum install -y openssl openssl-devel
  •  安装Nginx 步骤

    • 将Nginx的源码包上传到 Linux
    • 解压Nginx   tar -xvf nginx-1.17.8.tar
    • 进入到解压之后的目录 nginx-1.17.8
    • 执行命令 configure,生成 Mikefile 文件
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
    • 创建临时文件目录   mkdir /var/temp/nginx/client -p

    • 执行make命令,进行编译make,安装 make install

  • 启动并访问 Nginx

    • 进入到nginx 安装目录  cd /usr/local/nginx/
    • 进入到 sbin目录,执行 nginx 命令
./nginx 启动
./nginx -s stop 关闭
ps aux | grep nginx 查看进程
    • 关闭防火墙,通过浏览器进行访问 ,默认端口 80
      /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
  • 配置虚拟主机:虚拟主机指的是,在一台服务器中,我们使用Nginx,通过端口或域名来配置多个网站.
    • 通过端口区分不同的虚拟主机
      cd /usr/local/nginx/conf #nginx.conf 就是Nginx的配置文件
      worker_processes  1; #work的进程数,默认为1
      #配置 影响nginx服务器与用户的网络连接
      events {
          worker_connections  1024; #单个work 最大并发连接数
      }
      
      # http块是配置最频繁的部分 可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能
      http {
          # 引入mime类型定义文件
          include       mime.types;
          default_type  application/octet-stream;
          sendfile        on;
          keepalive_timeout  65; # 超时时间
          
          #server 配置虚拟主机的相关参数 可以有多个,一个server就是一个虚拟主机
          server {
              # 监听的端口
              listen       80; 
              #监听地址
              server_name  localhost;         
      
              # 默认请求配置
              location / {
                  root   html; # 默认网站根目录
                  index  index.html index.htm; # 欢迎页
              }
      
              # 错误提示页面
              error_page   500 502 503 504  /50x.html;
              location = /50x.html {
                  root   html;
              }
          }
      }
    • 配置新的端口
# 配置新的server
    server {
        listen       81; # 修改端口
        server_name  localhost;

        location / {
            root   html81; # 重新制定一个目录
            index  index.html index.htm;
        }
    }
    • 复制一份 html目录  cp -r html html81
    • 重新加载配置文件   sbin/nginx -s reload
    • 访问
http://192.168.52.100 访问第一个server

http://192.168.52.100:81/ 访问第二个server
  • 通过域名区分不同的虚拟主机
    • 一个域名对应一个ip地址,一个ip地址可以被多个域名绑定。
    • 通过 DNS服务器去解析域名
  • 本地测试可以修改hosts文件。修改window的hosts文件:(C:\Windows\System32\drivers\etc)
    • 可以配置域名和ip的映射关系,如果hosts文件中配置了域名和ip的对应关系,不需要走dns服务器。
配置一下nginx的映射
192.168.52.100 www.ng.com
    • 使用SwitchHosts,修改hosts
配置nginx.conf

#通过域名区分虚拟主机
    server {
        listen       80;
        server_name  www.t1.com;

        location / {
            root   html-t1;
            index  index.html index.htm;
        }
    }
    
    server {
        listen       80;
        server_name  www.t2.com;

        location / {
            root   html-t2;
            index  index.html index.htm;
        }
}
  • 创建 html-t1和 html-t2 目录

  • 修改一下index.html 中,刷新

  • 访问

3 反向代理

 反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。反向代理是指用代理服务器接收客户端的请求,然后将请求转发给网站内部应用服务器,并将从服务器上得到的结果返回给客户端.

  • 实现反向代理步骤

    • 简单的使用2个tomcat实例模拟两台http服务器,分别将tomcat的端口改为8080和8081

    • 启动两个tomcat
    • 反向代理服务器的配置

#反向代理配置 
    #upstream中的server是真正处理请求的应用服务器地址
    upstream lagou1{
        #用server定义HTTP地址
        server 192.168.52.100:8080;
    }


    server {
        listen       80;
        server_name  www.lagou1.com;
        location / {
            # 利用 proxy_ pass可以将请求代理到upstream命名的HTTP服务
            proxy_pass http://lagou1;  #转发到的地址
            index  index.html index.htm;
        }
    }

    upstream lagou2{
        #用server定义HTTP地址
        server 192.168.52.100:8081;
    }


    server {
        listen       80;
        server_name  www.lagou2.com;
        location / {
            proxy_pass http://lagou2; 
            index  index.html index.htm;
        }
  }
    • nginx重新加载配置文件   nginx -s reload

    • 配置域名, 在hosts文件中添加域名和ip的映射关系
      192.168.52.100 www.lagou1.com
      192.168.52.100 www.lagou2.com

       

4 负载均衡

当系统面临大量用户访问,负载过高的时候,通常会使用增加服务器数量来进行横向扩展, 负载均衡主要是为了分担访问量,将请求合理分发给不同的服务器, 避免临时的网络堵塞

  • 负载均衡策略
    • 轮询:默认策略, 每个请求按照时间顺序逐一分配到不同的服务器,如果某一个服务器下线,能自动剔除

      #负载均衡 upstream lagouServer{ # 用server定义 HTTP地址 server 192.168.52.100:8081; server 192.168.52.100:8082; }
      
      server { listen 80; server_name www.lagouNB.com;
      
      location / {
          # 利用 proxy_ pass可以将请求代理到upstream命名的HTTP服务
          proxy_pass   http://lagouServer;
          index  index.html index.htm;
      }
      
      }#负载均衡 upstream lagouServer{ # 用server定义 HTTP地址 server 192.168.52.100:8081; server 192.168.52.100:8082; }
      
      server { listen 80; server_name www.lagouNB.com;
      
      location / {
          # 利用 proxy_ pass可以将请求代理到upstream命名的HTTP服务
          proxy_pass   http://lagouServer;
          index  index.html index.htm;
      }
      
      }
    • 权重:可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1.
#负载均衡
upstream lagouServer{
    # 用server定义 HTTP地址
    server 192.168.52.100:8081 weight=1;
    server 192.168.52.100:8082 weight=10;
}

 

posted @ 2021-07-27 16:09  forever_fate  阅读(47)  评论(0)    收藏  举报