1个web程序:部署在7061端口,启动 【dotnet NginxWeb.dll --urls="http://*:7061" --ip="127.0.0.1" --port=7061】
Nginx程序:监听7000端口

比如单独启动部署在7061端口下的web程序,进行访问,我们会发现,除了请求的加载,还有很多静态 css、js、图片等资源的加载,这些资源的加载也是占服务器带宽的,假设带宽为1m,几个大图片直接就占满了。
所以这里引入动静分离,将静态资源单独隔离出来,不占据主服务器的带宽,同时也有利于静态资源做缓存处理。

方案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;