【愚公系列】2022年04月 .NET架構班 033-分布式中間件 Nginx多場景使用問題分析之動靜分離

      網友投稿 696 2025-03-31

      前言

      在Web開發中,通常來說,動態資源其實就是指那些后臺資源,而靜態資源就是指HTML,javaScript,CSS,img等文件。

      一般來說,都需要將動態資源和靜態資源分開,將靜態資源部署在Nginx上,當一個請求來的時候,如果是靜態資源的請求,就直接到nginx配置的靜態資源目錄下面獲取資源,如果是動態資源的請求,nginx利用反向代理的原理,把請求轉發給后臺應用去處理,從而實現動靜分離。

      在使用前后端分離之后,可以很大程度的提升靜態資源的訪問速度,同時在開過程中也可以讓前后端開發并行可以有效的提高開發時間,也可以有些的減少聯調時間 。

      一、Nginx多場景使用問題分析之動靜分離

      1.同一虛擬主機使用

      缺陷:如果商品是在電商Web網站中,這個時候從電商網站當中查詢商品的時候,會同時加載兩類數據,靜態數據和動態數據,靜態數據:js css 圖片,視頻,音頻等等,動態資源:商品數據。如果訪問js css 并發量比較大,會出現cpu,內存等資源全部被耗盡,導致動態數據加載沒有資源可用,所以,導致動態資源請求導致性能下降問題?如何提升性能?

      方案:動靜分離

      #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; proxy_cache_path /cache/nginx/ levels=1:2 keys_zone=mycache:64m; limit_conn_zone $server_name zone=perserver:10m; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { limit_conn perserver 1; proxy_cache mycache; proxy_pass http://YDT.EBusiness; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_cache_methods GET HEAD; proxy_cache_revalidate on; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_valid any 1m; proxy_cache_min_uses 1; proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504; } #靜態資源 location ~ \.(ico|js|css|png|jpg|mp4)$ { root D:/work/net-project/分布式中間件專題/網關中間件Nginx/XT.EBusiness.StaticResource/wwwroot; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # https 虛擬主機 server { listen 4435 ssl; server_name localhost; ssl_certificate D:/work/net/grpc-cluster/server-cert.pem; ssl_certificate_key D:/work/net/grpc-cluster/server-key.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; location / { proxy_pass http://XT.EBusiness; } } } #動態負載均衡配置 upstream XT.EBusiness{ server localhost:5001 max_fails=2 fail_timeout=10s; server localhost:5002 max_fails=2 fail_timeout=10s; server localhost:5003 backup; } } #數據庫代理 stream { server { listen 13306; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass localhost:3306; } upstream mysql { server localhost:3306; } }

      2.不同虛擬主機使用

      缺陷:如果動靜資源在一個虛擬主機中,那么靜態資源和動態資源共享同一個資源,如果靜態或者動態資源訪問量比較大,把資源消耗殆盡,動態和靜態資源互相會進行影響,導致系統整體上性能下降,如何提升性能?

      方案:動靜不同虛擬主機

      #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; proxy_cache_path /cache/nginx/ levels=1:2 keys_zone=mycache:64m; limit_conn_zone $server_name zone=perserver:10m; server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { limit_conn perserver 1; proxy_cache mycache; proxy_pass http://YDT.EBusiness; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_cache_methods GET HEAD; proxy_cache_revalidate on; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_valid any 1m; proxy_cache_min_uses 1; proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504; } #靜態資源 #location ~ \.(ico|js|css|png|jpg|mp4)$ { # root D:/work/net-project/分布式中間件專題/網關中間件Nginx/YDT.EBusiness.StaticResource/wwwroot; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } server { listen 8089; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #location / { # root html; # index index.html index.htm; #} location / { proxy_pass http://localhost:5007; } #靜態資源 #location ~ \.(ico|js|css|png|jpg|mp4)$ { # root D:/work/net-project/分布式中間件專題/網關中間件Nginx/YDT.EBusiness.StaticResource/wwwroot; #} #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 8090; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #location / { # root html; # index index.html index.htm; #} #location / { # proxy_pass http://localhost:5007; #} #靜態資源 location ~ \.(ico|js|css|png|jpg|mp4)$ { root D:/work/net-project/分布式中間件專題/網關中間件Nginx/XT.EBusiness.StaticResource/wwwroot; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } proxy_cache_path cache/nginx/ levels=1:2 keys_zone=mycache:64m; server { listen 8091; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #location / { # root html; # index index.html index.htm; #} location / { proxy_cache mycache; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_cache_methods GET HEAD; proxy_cache_revalidate on; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_cache_valid any 1m; proxy_cache_min_uses 1; proxy_cache_use_stale error timeout invalid_header http_500 http_502 http_503 http_504; proxy_pass http://localhost:8089; } #靜態資源 location ~ \.(ico|js|css|png|jpg|mp4)$ { proxy_pass http://localhost:8090; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } # https 虛擬主機 server { listen 4435 ssl; server_name localhost; ssl_certificate D:/work/net/grpc-cluster/server-cert.pem; ssl_certificate_key D:/work/net/grpc-cluster/server-key.pem; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; location / { proxy_pass http://XT.EBusiness; } } } #動態負載均衡配置 upstream XT.EBusiness{ server localhost:5001 max_fails=2 fail_timeout=10s; server localhost:5002 max_fails=2 fail_timeout=10s; server localhost:5003 backup; } } #數據庫代理 stream { server { listen 13306; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass localhost:3306; } upstream mysql { server localhost:3306; } }

      3.動靜分離共享資源

      缺陷:如果動靜資源在一個虛擬主機中,那么靜態資源和動態資源共享同一個資源,如果靜態或者動態資源訪問量比較大,把資源消耗殆盡,動態和靜態資源互相會進行影響,導致系統整體上性能下降,如何提升性能?

      方案:Include

      Include nginx.https.conf

      【愚公系列】2022年04月 .NET架構班 033-分布式中間件 Nginx多場景使用問題分析之動靜分離

      .NET Nginx 分布式

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:家具銷售訂單分類:提高效率和優化銷售策略的關鍵
      下一篇:Excel 中輕松批量生成多個二維碼
      相關文章
      亚洲国产成人99精品激情在线| 亚洲伊人tv综合网色| 亚洲欧洲日韩综合| 久久亚洲精品成人av无码网站| 国产V亚洲V天堂无码久久久| 亚洲一级黄色视频| 精品国产日韩亚洲一区| 中文字幕精品无码亚洲字| 伊人久久亚洲综合| 亚洲精品自在在线观看| 亚洲VA中文字幕无码一二三区| 亚洲日韩v无码中文字幕| 久久亚洲精品视频| 久久精品国产亚洲夜色AV网站| 亚洲爆乳精品无码一区二区三区| 亚洲va无码手机在线电影| 亚洲AV无码成人网站久久精品大| 婷婷亚洲久悠悠色悠在线播放| 亚洲今日精彩视频| 亚洲成a人片在线网站| 亚洲人成7777影视在线观看| 77777午夜亚洲| 亚洲高清乱码午夜电影网| 成人亚洲国产精品久久| 亚洲伊人成无码综合网| 亚洲精品高清国产一线久久| 亚洲av日韩综合一区在线观看| 亚洲美女中文字幕| 性xxxx黑人与亚洲| 亚洲成a人片在线观看天堂无码| 亚洲av日韩av永久在线观看| 亚洲精品国产V片在线观看 | 亚洲综合AV在线在线播放| 亚洲av中文无码乱人伦在线播放| 久久99亚洲网美利坚合众国| 亚洲一区在线观看视频| 亚洲av永久无码| 中文字幕精品亚洲无线码二区| 亚洲AV成人精品网站在线播放 | 麻豆狠色伊人亚洲综合网站| 亚洲国产成人手机在线观看|