Nginx动静分离和平滑升级

📒博客主页: ​​微笑的段嘉许博客主页​​ <a name='[顶部]'></a>

💻微信公众号:微笑的段嘉许

🎉欢迎关注🔎点赞👍收藏⭐留言📝

📌本文由微笑的段嘉许原创!

📆51CTO首发时间:🌴2023年2月9日🌴

✉️坚持和努力一定能换来诗与远方!

🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

 Nginx动静分离和平滑升级_nginx

不要偷走我小火车哦~ ~ ~


本文介绍

Nginx的动静分离,原理是将动态请求和静态请求分开,不能单纯的理解成只把动态页面和静态页面物理分离。严格意义上,可以理解成使用nginx处理静态页面,tomcat或PHP处理动态页面。


详情介绍

​ Nginx (“engine x”)是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上ngimx,的并发能力确实在同类型的网页服务器中表现较好
Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率﹐能经受高负载的考验,有报告表明能支持高达50, 000个并发连接数。

​Nginx作用:反向代理、负载均衡、动静分离等​

 Nginx动静分离和平滑升级_centos_02

什么是动静分离

在我们的软件开发中,有些请求是需要后台处理的,有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件。让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作。提高资源响应的速度。

 Nginx动静分离和平滑升级_配置文件_03

📝实验配置与实验

拓扑图

 Nginx动静分离和平滑升级_centos_04

推荐步骤

  • 在Centos01安装Nginx服务,使用​​www.duanjiaxu.com​​访问Nginx
  • 在Centos02配置DNS服务器使用,创建duanjiaxu.com域和djx.com域分别添加主机指向Nginx主机IP地址和LAMP主机IP地址
  • 在Centos03安装LAMP平台,使用www.djx.com访问
  • 在Nginx服务器配置动静分离静,静态数据图片访问Nginx动态php访问跳转到LAMP
  • 在Centos01安装新版Nginx实现平滑升级,配置Nginx监控访问监控进行基本身份验证

实现步骤:

一、在Centos01安装nginx服务,使用www.duanjiaxu.com访问nginx

1、在Centos01上安装nginx服务

1)上传nginx程序包

[root@centos01 ~]# rz
z waiting to receive.**B0100000023be50
[root@centos01 ~]# rz
z waiting to receive.**B0100000023be50
[root@centos01 ~]# ls
anaconda-ks.cfg nginx-1.12.0.tar.gz 公共 视频 文档 音乐
initial-setup-ks.cfg nginx-1.16.1.tar.gz 模板 图片 下载 桌面

 Nginx动静分离和平滑升级_centos_05

2)安装nginx依赖程序

[root@centos01 ~]# useradd -M -s /sbin/nologin nginx      //创建nginx用户
[root@centos01 ~]# yum -y install pcre-devel zlib-devel //安装nginx依赖程序

 Nginx动静分离和平滑升级_配置文件_06

3)解压nginx程序包

[root@centos01 ~]# tar zxf ./nginx-1.12.0.tar.gz -C /usr/src/     //解压nginx程序包
[root@centos01 ~]# cd /usr/src/nginx-1.12.0/ //进入到nginx文件目录

4)安装nginx

[root@centos01 nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module     //安装模块
[root@centos01 nginx-1.12.0]# make && make install //编译安装nginx程序
root@centos01 nginx-1.12.0]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/ //优化命令

5)创建网站根目录设置网站主页

[root@centos01 ~]# mkdir /www     //创建网站根目录
[root@centos01 ~]# echo "www.duanjiaxu.com" > /www/index.html //设置网站主页

2、配置IP地址额DNS

1)配置IP地址

[root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32     //进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.10
NETMASK=255.255.255.0
DNS1=192.168.100.20
---
[root@centos01 ~]# systemctl restart network //重新启动网卡服务
[root@centos01 ~]# cat /etc/resolv.conf //查看DNS是否配置成功
# Generated by NetworkManager
nameserver 192.168.100.20

3、修改nginx主配置文件

1)修改主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf     //进入nginx主配置文件
---
2 user nginx; //nginx管理用户
36 listen 192.168.100.10:80; //监听的IP地址和端口
39 charset utf-8; //支持中文
44 root /www/; //网站根目录

2)使用win10虚拟机验证

[root@centos01 ~]# nginx      //启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx //监听端口
tcp 0 0 192.168.100.10:80 0.0.0.0:* LISTEN 4193/nginx: master

 Nginx动静分离和平滑升级_动静分离_07

二、在Centos配置DNS服务器,使用创建duanjiaxu.com域和djx.com域分别添加主机指向nginx主机IP地址和LAMP主机IP地址

1、配置网卡服务

1)配置IP地址和DNS

[root@centos02 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32     //进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.20 //IP地址
NETMASK=255.255.255.0 //子网掩码
DNS1=192.168.100.20 //DNS
----
[root@centos02 ~]# systemctl restart network //重新启动网卡服务
[root@centos02 ~]# cat /etc/resolv.conf //查看DNS是否配置成功
# Generated by NetworkManager
nameserver 192.168.100.20

 Nginx动静分离和平滑升级_配置文件_08

2、安装DNS服务

1)挂载系统光盘

[root@centos02 ~]# mount /dev/cdrom /mnt/   //挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos02 ~]# ls /mnt/ //查看系统光盘是否挂载成功
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL

2)安装DNS程序包

[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm 
警告:/mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:bind-32:9.9.4-50.el7 ################################# [100%]
[root@centos02 ~]# rpm -ivh /mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm
警告:/mnt/Packages/bind-chroot-9.9.4-50.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:bind-chroot-32:9.9.4-50.el7 ################################# [100%]

3、修改DNS配置文件

1)修改DNS主配置文件

[root@centos02 ~]# echo "" > /etc/named.conf     //清空主配置文件
[root@centos02 ~]# vim /etc/named.conf //进入主配置文件
---
options {
listen-on port 53 { any; };
};
zone "duanjiaxu.com" IN {
type master;
file "var/named/duanjiaxu.com.zone";
};
zone "djx.com" IN {
type master;
file "var/named/djx.com.zone";
};

 Nginx动静分离和平滑升级_动静分离_09

2)修改第一个DNS区域胚子和文件

[root@centos02 ~]# vim /var/named/duanjiaxu.com.zone    //进入第一个区域配置文件
---
$TTL 86400
@ SOA duanjiaxu.com. root.duanjiaxu.com. (
2023020510
1H
15M
1W
1D
)
@ NS centos02.duanjiaxu.com.
centos02 A 192.168.100.20
www A 192.168.100.10
---
[root@centos02 ~]# named-checkzone duanjiaxu.com /var/named/duanjiaxu.com.zone //查看区域配置文件语法是否有误
zone duanjiaxu.com/IN: loaded serial 2023020510
OK

3)修改第二个DNS区域配置文件

[root@centos02 ~]# cp /var/named.duanjiaxu.com.zone /var/named.djx.com.zone     //复制第一个区域配置文件
[root@centos02 ~]# vim /var/named.djx.com.zone //进入第二个区域配置文件
---
:%s/duanjiaxu.com/djx.com/g //把duanjiaxu.com替换为djx.com
$TTL 86400
@ SOA djx.com. root.djx.com. (
2023020510
1H
15M
1W
1D
)
@ NS centos02.djx.com.
centos02 A 192.168.100.20
www A 192.168.100.30 //IP地址修改为第二台apache服务器的IP地址



4)重新启动DNS服务

[root@centos02 ~]# systemctl restart named    //重新启动DNS服务
[root@centos02 ~]# netstat -anptu | grep named //监听网卡
tcp 0 0 192.168.100.20:53 0.0.0.0:* LISTEN 41066/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 41066/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 41066/named
tcp6 0 0 ::1:953 :::* LISTEN 41066/named
udp 0 0 192.168.122.1:53 0.0.0.0:* 41066/named
udp 0 0 192.168.100.20:53 0.0.0.0:* 41066/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 41066/named

5)使用win10虚拟机验证第一台apache服务器是否能够正常访问

 Nginx动静分离和平滑升级_nginx_10

三、在Centos03安装LAMP平台,使用www.djx.com访问

1、配置网卡服务

1)配置IP地址和DNS

[root@centos03 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32       //进入网卡配置文件
---
TYPE=Ethernet
BOOTPROTO=static
NAME=ens32
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.30
NETMASK=255.255.255.0
DNS1=192.168.100.20
[root@centos03 ~]# systemctl restart network //重新启动网卡服务
[root@centos03 ~]# cat /etc/resolv.conf //查看DNS配置是否生效
# Generated by NetworkManager
nameserver 192.168.100.20

2)挂载系统光盘

[root@centos03 ~]# mount /dev/cdrom /mnt/     //挂载系统光盘
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centos03 ~]# ls /mnt/ 查看是否挂载成功
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@centos03 ~]# rm -rf /etc/yum.repos.d/CentOS-* //删除系统自带的yum源
[root@centos03 ~]# ls /etc/yum.repos.d/
local.repo
[root@centos03 ~]# cat /etc/yum.repos.d/local.repo
[local]
name=centos
baseurl=file:///mnt
enabled=1
gpgcheck=0

[root@centos03 ~]# yum -y install httpd php php-mysql mariadb-server //安装LAMP平台

2、修改apache的主配置文件

1)设置网站主页

[root@centos03 ~]# mkdir /www     //新建网站根目录
[root@centos03 ~]# echo "www.djx.com" > /www/index.html //设置网站主页
[root@centos03 ~]# vim /var/www/html/index.php //配置php测试页
---
<?php
phpinfo();
?>

2)修改apache主配置文件

[root@centos03 ~]# mkdir /www   //新建网站根目录
[root@centos03 ~]# echo "www.djx.com" > /www/index.html //设置网站主页
[root@centos03 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak //备份主配置文件避免修改错误原文件丢失
[root@centos03 ~]# vim /etc/httpd/conf/httpd.conf //进入主配置文件
---
119 DocumentRoot "/www" //修改网站根目录
131 <Directory "/www"> //授权网站根目录
132 Options Indexes FollowSymLinks
133 AllowOverride None
134 Require all granted
135 </Directory>
---
[root@centos03 ~]# httpd -t //检查主配置文件是否修改正确
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe38:619c. Set the 'ServerName' directive globally to suppress this message
Syntax OK
[root@centos03 ~]# systemctl restart httpd //重新启动apache服务

3、验证

1)使用域名www.duanjiaxu.com访问nginx网站

 Nginx动静分离和平滑升级_动静分离_11

2)使用域名www.djx.com访问apache网站

 Nginx动静分离和平滑升级_动静分离_12

四、在nginx服务器配置动静分离,静态数据图片访问nginx动态php访问跳转到LAMP

1、配置动静分离

1)修改nginx主配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf     //进入nginx主配置文件
---
user nginx; //nginx管理用户
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;

access_log logs/access.log;
sendfile on;
keepalive_timeout 65;
server {
listen 192.168.100.10:80; //监听的IP地址和端口
server_name www.duanjiaxu.com; //域名
charset utf-8; //支持中文
access_log logs/www.duanjiaxu.com.access.log; //成功日志
location / {
root /www/; //网站根目录
index index.html index.htm;
}
location ~ .*\.(gif|jpg|jpeg|bmp|swf)$ {
root /www/;
index index.html index.html;
}
location ~ \.php$ {
proxy_pass http://www.djx.com;
}
}
}
---
[root@centos01 ~]# nginx -t /检查配置文件修改是否有误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@centos01 ~]# nginx //启动nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx //监听网卡
tcp 0 0 192.168.100.10:80 0.0.0.0:* LISTEN 44180/nginx: master

2、验证

 Nginx动静分离和平滑升级_动静分离_13

五、在Centos01安装新版本nginx实现平滑升级,配置ngixn监控访问监控进行基本身份验证

1、在Centos01安装新版本nginx实现平滑升级

1)停止nginx服务

[root@centos01 ~]# killall nginx      //停止nginx服务

2)安装新版本nginx

[root@centos01 ~]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module      //安装模块
[root@centos01 ~]# make //编译新版本nginx
[root@centos01 ~]# killall nginx //停止nginx服务
[root@centos01 ~]# mv /usr/local/sbin/nginx /usr/local/sbin/nginx.bak //备份老版本ngixn
[root@centos01 ~]# ln -s /usr/src/nginx-1.16.1/objs/nginx /usr/local/sbin/ //创建一个软连接
[root@centos01 ~]# nginx //启动nginx服务
[root@centos01 ~]# curl -I www.duanjiaxu.com //查看nginx版本号
HTTP/1.1 200 OK
Server: nginx/1.16.1 //版本号
Date: Wed, 08 Feb 2023 19:06:59 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 18
Last-Modified: Wed, 08 Feb 2023 17:38:26 GMT
Connection: keep-alive
ETag: "63e3de12-12"
Accept-Ranges: bytes

 Nginx动静分离和平滑升级_nginx_14

2、配置nginx监控进行基本身份验证

1)安装验证数据库

[root@centos01 ~]# rpm -ivh /mnt/Packages/httpd-tools-2.4.6-67.el7.centos.x86_64.rpm      //安装验证数据库程序
[root@centos01 ~]# htpasswd -c /usr/local/nginx/password duanjiaxu //创建验证数据库账号名为duanjiaxu
New password: //设置密码
Re-type new password: //确认密码
Adding password for user duanjiaxu

2)修改nginx配置文件

[root@centos01 ~]# vim /usr/local/nginx/conf/nginx.conf     //进入nginx主配置文件
---
location /status {
30 stub_status on;
31 access_log off;
32 auth_basic "welcom Auth";
33 auth_basic_user_file /usr/local/nginx/password;
34 }
---
[root@centos01 ~]# nginx -t //检查配置文件修改是否有误
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@centos01 ~]# killall nginx //停止nginx服务
[root@centos01 ~]# nginx //启动 nginx服务
[root@centos01 ~]# netstat -anptu | grep nginx //监听网卡
tcp 0 0 192.168.100.10:80 0.0.0.0:* LISTEN 44553/nginx: master

3、验证

 Nginx动静分离和平滑升级_动静分离_15



🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

 Nginx动静分离和平滑升级_动静分离_16