Nginx——下载,安装,启动,关闭,配置——负载均衡——静态代理——动静分离

Nginx

1. Nginx简介

Nginx (engine x)是一个高性能的Web服务器和反向代理服务器,也可以作为邮件代理服务器。
Nginx是免费开源的,采用C语言开发编写的,同时 Nginx也有收费的商业版本,商业版本提供了性能优化﹑宕机等紧急问题处理等技术支持和服务。

2. 正向代理和反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器;

正向代理类似一个跳板机,代理访问外部资源。比如:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器,它能访问那个我不能访问的网站,于是我先连上代理服务器,告诉它我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。(翻墙)

3. Nginx 环境搭建

3.1 下载

官方开源地址:http://nginx.org/

在这里插入图片描述

3.2 安装环境准备

  1. gcc 编译器是否安装
    检查是否安装: yum list installed |grep gcc
    执行安装: yum install gcc -y
    在这里插入图片描述

  2. openssl库是否安装
    查看是否安装:yum list installed | grep openssl
    执行安装: yum install openssl openssl-devel -y
    在这里插入图片描述

  3. pcre 库是否安装
    查看是否安装:yum list installed | grep pcre
    执行安装: yum install pcre pcre-devel -y
    在这里插入图片描述

  4. zlib 库是否安装
    查看是否安装:yum list installed | grep zlib
    执行安装: yum install zlib zlib-devel -y
    在这里插入图片描述

  5. 一次性安装,执行如下命令
    上边需要安装四次真的有些麻烦,下边这条命令直接一次安装多个,如果已经安装就会跳过,没有安装就按执行安装。
    yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y

3.3 安装-启动-关闭-重启

3.3.1 将Windows上下载的安装包上传到Linux上

在这里插入图片描述

3.3.2 使用命令解压

tar -zxvf nginx-1.20.2.tar.gz

在这里插入图片描述

3.3.3 指定安装目录

使用配置安装 指定安装的位置为/usr/local/nginx
在nginx主目录下执行
./configure --prefix=/usr/local/nginx
编译
make
安装
make install
安装成功
在这里插入图片描述
在这里插入图片描述

3.3.4 启动
  1. 普通启动
    切换到nginx安装目录的sbin目录下,执行:./nginx
    在这里插入图片描述

  2. 通过配置文件启动
    ./nginx -c /usr/local/nginx/conf/nginx.conf

    /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
    -c 是指定配置文件,而且配置文件路径必须指定绝对路径
    在这里插入图片描述

  3. 检查Nginx是否启动
    通过查看进程查看: ps -ef |grep nginx
    nginx 体系结构由master进程和其worker进程组成
    master进程读取配置文件,并维护worker进程,而worker进程则对请求进行实际处理。

  4. 用Windows访问Nginx
    在这里插入图片描述

3.3.5 关闭

使用kill杀死进程:kill 12091
在这里插入图片描述

3.3.6 重启

修改配置后需要重启服务(杀死进程,启动服务)
./nginx -s reload

4. 配置检查

当修改 Nginx配置文件后,可以使用Nginx命令进行配置文件语法检查,用于检查Nginx配置文件是否正确

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t
在这里插入图片描述

4.1 查看Nginx版本

Nginx版本号,编辑器版本和配置参数
/usr/local/nginx/sbin/nginx -V
在这里插入图片描述

4.2 核心配置文件说明

在这里插入图片描述

4.2.1 基本配置

#配置worker进程运行用户 nobody也是一个linux用户,一般用于启动程序,没有密码
#user  nobody;
#配置工作进程数目,根据硬件调整,通常等于CPU数量或者2倍于CPU数量
worker_processes  1;
#配置全局错误日志及类型,【debug | info | notice | warn | error | crit】
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid; #配置进程pid文件

4.2.2 events 配置


#配置工作模式和连接数
events {
    worker_connections  1024; #配置每个worker进程连接数上限(65535),nginx支持的总连接数就等于worker_processes * worker_connections
}

4.2.3 http 配置

#配置http服务器,利用它的反向代理功能提供负载均衡支持
http {
		#配置nginx支持哪些多媒体类型,可以在conf/mime.types查看支持哪些多媒体类型
    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 日志及存放路径,并使用上面定义的main日志格式
    #access_log  logs/access.log  main;
    sendfile  on; #开启高效文件传输模式
    #tcp_nopush  on; #防止网络阻塞
    #keepalive_timeout  0;
    keepalive_timeout  65; #长连接超时时间,单位是秒
	  #gzip  on; #开启gzip压缩输出
	  
	  #配置虚拟主机
	  server {
        listen       80;  #配置监听端口
        server_name  localhost;  #配置服务名称

        #charset koi8-r;   #配置字符集

        #access_log  logs/host.access.log  main;  #配合本虚拟主机的访问日志

			 #默认的匹配斜杠/的请求,当访问路径中有斜杠/,会被该localhost匹配到并进行处理
        location / {
        		 #root是配置服务器的默认网站根目录位置,默认为nginx安装主目录下的html目录
            root   html;
            #配置首页文件名称
            index  index.html index.htm;
        }
        #error_page  404              /404.html;  #配置404页面
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;  #配置50x错误页面
			 #精准匹配
			 location = /50x.html {
            root   html;
        }
     }          

5. Nginx主要应用

  • 静态网站部署
  • 负载均衡
  • 静态代理
  • 动静分离
  • 虚拟主机

5.1 静态网站部署

Nginx是一个HTTP的web服务器,可以将服务器上的静态文件(如HTML、图片等)通过HTTP协议返回给浏览器客户端

  1. 修改nginx.conf配置文件
    在server中,通过localhost匹配访问路径,然后转发给静态资源
location /ace {
	 #root是配置服务器的默认网站根目录位置,默认为nginx安装主目录下的html目录
   root   /opt/www;  #资源放在/opt/www/ace目录下才能访问
   #配置首页文件名称
   index  index.html;
}
  1. 重启nginx服务
    /usr/local/nginx/sbin/nginx -s reload

  2. 在浏览器上输入http:192.168.0.128:80/进行访问欢迎界面

  3. 在浏览器上输入http:192.168.0.128:80/ace进行访问部署的静态资源

5.2 负载均衡

在网站创立初期,我们一般都使用单台机器对外提供集中式服务。随着业务量的增大,我们一台服务器不够用,此时就会把多台机器组成一个集群对外提供服务,但是,我们网站对外提供的访问入口通常只有一个,比如www.web.com。那么当用户在浏览器输入www.web.com进行访问的时候,如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡要做的事情。

负载均衡通常是指将请求"均匀"分摊到集群中多个服务器节点上执行,这里的均匀是指在一个比较大的统计范围内是基本均匀的,并不是完全均匀。

5.3 负载均衡实现——Nginx

Nginx通过在nginx.conf文件进行配置即可实现负载均衡

在这里插入图片描述

#gzip  on;
upstream www.myweb.com{
	server 192.168.0.128:8081;
	server 192.168.0.128:8082;
}
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  logs/host.access.log  main;
    location / {
        root   html;
        index  index.html index.htm;
    }
    location /myweb {
        proxy_pass http://www.myweb.com;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }

其中weight表示权重,用于后端服务器性能不均匀的情况,访问比率约等于权重之比,权重越大访问机会越多

upstream是配器nginx与后端服务器负载均衡非常重要的一个模块,并且它还能对后端的服务器的健康状态进行检查,若后端服务器中的一台发生故障,则前端的请求不会转发到该故障的机器。

5.4 Nginx常用负载均衡策略

  1. 轮询(默认)
  2. 权重——weight
  3. 最少连接 least_conn
  4. ip_hash——session不会丢失
    前三个相同的请求,请求多次都会涉及到更换服务器的问题,所有session会丢失。ip_hash策略session不会丢失,它是根据请求的ip计算请求哪个服务器,ip相同请求的服务器不会改变
5.4.1 轮询(默认)

注意:这里的轮询并不是每个请求轮流分配到不同的后端服务器,与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。如果后端服务器down掉,将自动剔除。
应用于后端服务器性能均匀的情况

5.4.2 权重——weight

每个请求按一定比例分发到不同的后端服务器,weight值越人访回的比例越大,用于后端服务器性能不均的情况,根据服务器的性能分配不同的权重,交替访问。

在这里插入图片描述

5.4.3 ip_hash——session不会丢失

ip_hash也叫IP绑定,每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话session丢失的问题

假设我们又两台服务器,那就是ip的hash值对2取模,得到的值是0或1,就去请求服务器0或者服务器1。
ip不变→ip对应的hash值不变→对2取模的值不变→请求的服务器不变
算法: hash(“124.207.55.82”)%2=0,1

在这里插入图片描述

5.4.4 最少连接 least_conn

web请求会被转发到连接数最少的服务器上。

在这里插入图片描述

5.5 负载均衡其他几个配置

5.5.1 配置1 backup
upstream backserver{
	server 192.168.0.128:8081;
	#其它所有的非backup机器down的时候,才请求backup
	server 192.168.0.128:8082 backup;
}
5.5.2 配置2 down
upstream backserver{
	server 192.168.0.128:8081;
	#down 表示当前的server是down状态,不参与负载均衡
	server 192.168.0.128:8082 down;
}

一般在项目上线的时候,可以分配部署不同的服务器上,然后对Nginx重新reload。reload不会影响用户的访问,或者可以给一个提示页面,系统正在升级。

5.6 静态代理

  • 把所有静态资源的访问改为访问nginx,而不是访问tomcat,这种方式叫静态代理。因为nginx,更擅长于静态资源的处理,性能更好,效率更高。
  • 所以在实际应用中,我们将静态资源比如图片、css、html、js等交给nginx处理,而不是由tomcat处理。
    在这里插入图片描述
5.6.1 Nginx 静态代理实现方式
  1. 方式一 在nginx.conf 的location中配置静态资源的后缀
    例如:当访问静态资源,则从linux服务器/opt/static目录下获取(举例)

  2. 方式二 在nginx.conf的location中配置静态资源所在目录实现

5.7 动静分离

  • Nginx的负载均衡和静态代理结合在一起,我们可以实现动静分离,这是实际应用中常风的一种场景。

  • 动态资源,如jsp由tomcat或其他web服务器完成

  • 静态资源,如图片、css、js等由nginx,服务器完

  • 它们各司其职,专注于做自己擅长的事情

  • 动静分离充分利用了它们各自的优势,从而达到更高效合理的架构

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

848698119

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值