Day1 && Day 2 Nginx

开始:
2022年5月27日 16:02:44

结束:
2022年5月28日 18:17:54



一、nginx简介

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器。

特点:内存少,并发能力强。

(1.1)正向代理

nginx也可以实现正向代理。

正向代理:如果局域网中的客户端需要访问互联网,需要通过代理服务器才能进行访问,这种代理服务就称为正向代理。

正向代理:先访问代理服务器(在客户端中进行配置),通过代理服务器,才能访问网络。

(1.2)反向代理

反向代理,其实客户端对代理是无感知的,因为客户端不需要配置就可以完成访问操作,客户端只用发送请求到反向代理服务器,反向代理服务器去选择目标服务器获取数据再返回给客户端,此时反向代理服务器和目标服务器对于客户端来说就是一个服务器,暴露的是代理服务器的地址,隐藏了目标服务器的IP地址。
在这里插入图片描述
反向代理:对外暴露代理服务器地址,隐藏真实服务器地址。

(1.3)负载均衡

在这里插入图片描述

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。

(1.4)动静分离

为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。

在这里插入图片描述

(1.5)nginx 版本

常用版本分为四大阵营

  • Nginx开源版
    • http://nginx.org/
  • Nginx plus 商业版(全家桶)
    • https://www.nginx.com
  • openresty(重点)
    • http://openresty.org/cn/
  • Tengine(Nginx的基础上添加了高级功能和特性)
    • http://tengine.taobao.org/

linux配置

  • vim /etc/sysconfig/network-scripts/ifcfg-ens33
  • ONBOOT=yes
  • BOOTPROTO=static
IPADDR=192.168.44.101
NETMASK=255.255.255.0
GATEWAY=192.168.44.1
DNS1=8.8.8.8

注意44不是固定的,是根据每个人有不同的数字,ifconfig 查看,网关要和VM虚拟机的一致。

(1.6)安装nginx开源版

  • 下载
  • 编译安装和依赖检查

将文件移动到 /root
添加依赖
yum install -y gcc
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel

在这里插入图片描述
然后 make make install

在这里插入图片描述

  • nginx启停

进入到 sbin 目录下
在这里插入图片描述
使用 ./nginx 进行启动
在这里插入图片描述
在另外一台主机上访问这个IP,判断是否能够访问,在没有关闭防火墙之前是无法进行访问的。

  • 关闭防火墙

systemctl stop firewalld.service
systemctl disable firewalld.service

在这里插入图片描述
成功进行访问。

  • 安装成系统服务

创建服务脚本
vi /usr/lib/systemd/system/nginx.service

[Unit]
Description=nginx - web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
ExecQuit=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target

重新加载系统服务:systemctl daemon-reload
重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效)
systemctl reload nginx.service

启动服务:systemctl start nginx.service
开机启动:systemctl enable nginx.service

(1.7)nginx 常用命令

  • 进入 nginx 目录中
    • cd /usr/local/nginx/sbin
  • 查看 nginx 版本号
    • ./nginx -v
  • 启动 nginx
    • ./nginx
  • 停止 nginx
    • ./nginx -s stop
  • 重新加载 nginx
    • ./nginx -s reload

(1.8)安装nginx

在这里插入图片描述
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

二、nginx 的目录结构以及基本运行原理

(2.1)目录结构

在这里插入图片描述
_temp 作为后缀表示用于存放运行过程中的临时文件。

  • conf :用于存放配置文件,其中主配置文件是nginx.conf 它会引用其他的配置文件。
  • html:网页的静态资源(index.html 是默认页)
  • sbin:nginx 主程序
  • logs 记录日志(访问日志,错误日志)注意磁盘空间,因为当没有空间存放日志时,可能会导致错误。
    在这里插入图片描述

(2.2)基本运行原理

在这里插入图片描述
nginx 会创建一个主进程master,主进程会读取并校验文件,并fork 出来一个子进程worker 来处理请求,响应文件。

(2.3)Nginx 最小配置

  • worker_processes
    • worker_processes 1; :工作的进程个数,默认为1,表示开启一个业务进程,常常对应到服务器物理CPU内核数。

在这里插入图片描述

  • worker_connections
    • worker_connections 1024; 单个业务(worker)进程可接受连接数。
      在这里插入图片描述

include 将另外一个配置文件引入到当前文件中。

  • include mime.types;

    • include mime.types; 引入http mime类型
    • mime.types 记录了所有的 mime.type
    • mime.type 请求头,接收、响应的是什么类型的文件,服务器返回给客户端的头文件,告诉客户端服务器返回的文件类型。
      在这里插入图片描述
  • default_type application/octet-stream;

    • default_type application/octet-stream;如果mime类型没匹配上,默认使用二进制流的方式传输。
  • sendfile on;

    • sendfile on; 使用linux的 sendfile(socket, file, len) 高效网络传输,也就是数据0拷贝。

未开启sendfile时,用户要获取一份文件,发送请求,linux网络接口内部转发给nginx软件,nginx读取磁盘中的文件,读取完成以后发送给网络接口。

开启sendfile时,用户要获取一份文件,发送请求,linux网络接口内部转发给nginx,nginx调用sendfile() 发送信号,网络接口去磁盘上读取文件。

减少了数据拷贝的过程,提高了效率。

  • keepalive_timeout 65; 保持连接,超时时间。

在这里插入图片描述

server 就是一个主机。

一个nginx可以运行多个主机,每个主机都有自己独立的站点,互相不进行干扰。

在一台服务器上对应多个站点的技术称为虚拟主机(virtual host vhost)。

  • listen 80; 监听的端口号,可以通过端口号的形式去区分主机,不能重复。
  • server_name localhost; 域名或者主机名
  • location /
    • https://www.baidu.com/s?wd=vhost&ie=UTF-8 URL
    • /s?wd=vhost&ie=UTF-8 URi 资源
  • root html;文件根目录
  • index index.html index.htm; 默认页名称
  • error_page 500 502 503 504 /50x.html; 报错编码对应页面

三、实例一:实现简单反向代理

实现效果:在浏览器中输入wuqiyong.com跳转到tomcat默认主页。

(3.1)安装 tomcat

在 liunx 系统安装 tomcat,使用默认端口 8080

  • tomcat 安装文件放到 liunx 系统中,解压
  • 进入 tomcat 的 bin 目录中,./startup.sh 启动 tomcat 服务器
  • 在主机中配置hosts映射
    在这里插入图片描述
    在地址栏中输入wuqiyong.com:8080 即可实现了反向代理。

四、实例二,实现简单反向代理

使用 nginx 反向代理,根据访问的路径跳转到不同端口的服务中。

根据访问路径的不同(book,video),跳转到不同的tomcat服务器

使nginx监听端口9001,当访问
http://127.0.0.1:9001/book/ 跳转到 127.0.0.1:8080

当访问http://127.0.0.1:9001/video/ 跳转到 127.0.0.1:8081

  1. 准备两个tomcat,一个端口为8080,一个端口为8081。

停止已经运行的 tomcat 服务

  • 使用 ps -ef | grep tomcat 查找 ID
  • kill -9 id 杀死进程

修改tomcat端口号在service.xml文件中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

有三个地方需要修改,为的是防止重复。
在启动tomcat.

此时 wuqiyong.com:8080wuqiyong.com:8081 都能够访问tomcat主页

修改 nginx.conf
添加一个server
在这里插入图片描述
注意是在tomcat/webapp/创建文件夹/网页

五、实例:负载均衡

目标:当访问一个网页的时候,将访问请求平均分配给两个端口中

在 http {} 中添加 upstream myserver{}

在这里插入图片描述

在这里插入图片描述
此时访问http://192.168.19.200/edu/hello.html
就可以访问两个端口了,也就实现了负载均衡。

(5.1)分配配置

  • 第一种 轮询(默认)

    • 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
  • 第二种 weight

    • weight 代表权重默认为 1,权重越高被分配的客户端越多。
      在这里插入图片描述
  • 第三种 ip_hash

    • 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器。
      在这里插入图片描述
      可以解决session问题
  • 第四种 fair(第三方)

    • 按后端服务器的响应时间来分配请求,响应时间短的优先分配
      在这里插入图片描述

六、动静分离

将动态请求和静态请求分开,使用nginx处理静态页面,tomcat处理动态页面

主流实现动静分离:

  1. 把静态文件放在独立的服务器上
  2. 动态文件和静态文件混合发布,通过nginx区分。

通过location 指定不同的后缀名实现不同的请求转发,通过expires参数设置浏览器缓存过期时间,会比较是否更新,有更新重新下载,没有更新会加载缓存。

要求可以通过nginx访问静态资源

  1. 准备工作
    准备静态资源,用于访问

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
就实现了用nginx访问静态资源
在这里插入图片描述

七、高可用集群

在这里插入图片描述
这种情况下,nginx可能会宕机,如果宕机那么请求就失效了。

高可用:nginx宕机了仍然可以处理请求。

在这里插入图片描述

  1. 需要两台nginx服务器
  2. 需要keepalived(检测当前nginx是否宕机)
  3. 需要虚拟IP(实际不存在,是虚拟出来的,接收到请求以后要判断服务器是否宕机,来绑定没有宕机的服务器)

准备工作
在这里插入图片描述

在这里插入图片描述
安装nginx 安装keepalived

yum install keepalived –y

修改/etc/keepalived/keepalivec.conf 配置文件

global_defs {
 notification_email {
 acassen@firewall.loc
 failover@firewall.loc
 sysadmin@firewall.loc
 }
 notification_email_from Alexandre.Cassen@firewall.loc
 smtp_server 192.168.17.129
 smtp_connect_timeout 30
 router_id LVS_DEVEL
}
vrrp_script chk_http_port {
 script "/usr/local/src/nginx_check.sh"
 interval 2 #(检测脚本执行的间隔)
 weight 2
}
vrrp_instance VI_1 {
 state BACKUP # 备份服务器上将 MASTER 改为 BACKUP 
 interface ens33 //网卡
 virtual_router_id 51 # 主、备机的 virtual_router_id 必须相同
 priority 90 # 主、备机取不同的优先级,主机值较大,备份机值较小
 advert_int 1
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 192.168.17.50 // VRRP H 虚拟地址
 }
}

在这里插入图片描述


指导复习的问题


容易犯的错误

如果 make 没有用,可能是没有依赖
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel

如果linux文件提示缺少文件,可能是windows传输文件使用的是拖拽的方式传到VM虚拟机的,这样可能会导致文件损坏,要使用共享文件夹。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值