一. Nginx动静分离
1. 准备
1个web程序:部署在7061端口,启动 【dotnet NginxWeb.dll --urls="http://*:7061" --ip="127.0.0.1" --port=7061】
Nginx程序:监听7000端口
2. 目的
比如单独启动部署在7061端口下的web程序,进行访问,我们会发现,除了请求的加载,还有很多静态 css、js、图片等资源的加载,这些资源的加载也是占服务器带宽的,假设带宽为1m,几个大图片直接就占满了。
所以这里引入动静分离,将静态资源单独隔离出来,不占据主服务器的带宽,同时也有利于静态资源做缓存处理。
3. 实操
方案1:在Nginx同一个Server实现动静分离
剖析:
将wwwroot文件夹从发布包中单独处理出来,然后通过location配置绝对地址,实现静态资源的分离。
缺点:动静资源在一个虚拟主机中,那么静态资源和动态资源共享同一个资源,如果静态或者动态资源访问量比较大,把资源消耗殆尽,动态和静态资源互相会进行影响,导致系统整体上性能下降。
代码分享:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 7000; #监听端口
server_name test1; #随意配置一个地址即可,优先走代理
#动态资源
location / {
proxy_pass http://localhost:7061; #代理地址
}
#静态资源
location ~ \.(ico|js|css|png|jpg|mp4)$ {
root C:/Users/Administrator/Desktop/publish/wwwroot;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
方案2:在Nginx多个Server下实现动静分离
剖析:
使用主机7000端口监听动态资源,使用主机7001端口监听静态资源,在7000的主机下通过代理的形式链接 静态资源: proxy_pass http://localhost:7001; #代理地址
缺点:虽然是两个Sever,但这都是虚拟,还是在一台服务器上,一台服务器的承受能力毕竟是有限的。
代码分享:
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
#1.动态资源Server
server {
listen 7000; #监听端口
server_name test1;