Nginx11-动静分离

216 阅读3分钟

Nginx11-动静分离

1、动静分离

(1)动静分离是什么

  • 动:后台应用程序的业务处理
  • 静:网站的静态资源(html,javaScript,css,images 等文件)
  • 分离:将两者进行分开部署访问,提供用户进行访问。就是以后所有和静态资源相关的内容都交给Nginx来部署访问,非静态内容则交个类似于Tomcat的服务器来部署访问。

(2)为什么要动静分离

  • Nginx在处理静态资源的时候,效率是非常高的,而且Nginx的并发访问量也是名列前茅,而Tomcat则相对比较弱一些,所以把静态资源交个Nginx后,可以减轻Tomcat服务器的访问压力并提高静态资源的访问速度。
  • 动静分离以后,降低了动态资源和静态资源的耦合度。如动态资源宕机了也不影响静态资源的展示。

(3)如何实现动静分离

  • 实现动静分离的方式很多,比如静态资源可以部署到 CDN、Nginx 等服务器上,动态资源可以部署到 Tomcat、weblogic 或者 websphere 上。
  • 这里使用 Nginx + Tomcat 来实现动静分离。

image-20241009210039068

2、环境准备

(1)Tomcat安装

  • 在服务器192.168.119.162安装Tomcat

  • 更换yum源

# 备份原有的 Yum 源配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 下载新的 Yum 源配置文件,你可以选择使用阿里云、网易、腾讯云等国内镜像源。以下是使用阿里云作为例子的命令
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

# 清理YUM缓存并重建缓存
sudo yum clean all
sudo yum makecache
  • Tomcat需要Java环境,所以首先需要安装Java
sudo yum install java-1.8.0-openjdk-devel
  • 安装Tomcat
# 创建目录
mkdir /opt/tomcat
cd /opt/tomcat

# 下载tomcat后上传服务器/opt/tomcat
# 百度网盘地址:https://pan.baidu.com/s/1FCpAq6qwp8oCYPyr_ct1QQ?pwd=1234

# 解压tomcat
sudo tar -zxvf apache-tomcat-9.0.96.tar.gz -C /opt/

# 启动Tomcat
/opt/apache-tomcat-9.0.96/bin/startup.sh

# 检查Tomcat是否启动
/opt/apache-tomcat-9.0.96/bin/catalina.sh status

# 关闭tomcat
/opt/apache-tomcat-9.0.96/bin/shutdown.sh

# 防火墙设置
# 如果服务器有防火墙,需要开放Tomcat的端口(默认是8080)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# 或者直接关闭防火墙
sudo systemctl stop firewalld
sudo systemctl disable firewalld

image-20241009210840792

(2)Nginx安装

3、动静分离实现

(1)需求

image-20241009214431888

(2)Nginx服务器创建静态文件

  • 在192.168.119.161服务器上创建静态文件夹,将图片文件放入
# 创建静态文件夹,把图片Nginx.jpeg上传到目录/usr/local/nginx/html/static
mkdir /usr/local/nginx/html/static

# 完成后文件树如下
[root@localhost ~]# tree /usr/local/nginx/html/static
/usr/local/nginx/html/static
└── Nginx.jpeg

(3)Nginx服务器配置文件

  • 在192.168.119.161服务器上配置Nginx
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream webservice{
        server 192.168.119.162:8080;
    }

    server {
        listen       80;
        server_name  localhost;        

        #动态资源
        location / {
                proxy_pass http://webservice;
        }
        
        #静态资源
        location ~/.*\.(png|jpg|jpeg|gif|js){
                root html/static;
        }
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

(4)资源访问

image-20241010103153594

image-20241010103350238