范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

nginx前端到底用来做啥

  这篇文章是收集我在工作中经常会用到的nginx相关知识点,本文并不是基础知识的讲解更多的是一些方案中的简单实现。location的匹配规则= 表示精确匹配。只有请求的url路径与后面的字符串完全相等时,才会命中。^~ 表示如果该符号后面的字符是最佳匹配的,采用该规则,不再进行后续的查找。~ 表示该规则是使用正则定义的,区分大小写。~* 表示该规则是使用正则定义的,不区分大小写。
  注意的是,nginx的匹配优先顺序按照上面的顺序进行优先匹配,而且注意的是一旦某一个匹配命中直接退出,不再进行往下的匹配
  剩下的普通匹配会按照最长匹配长度优先级来匹配,就是说谁匹配得越多就用谁。server {     server_name website.com;     location /document {         return 701;     }     location ~* ^/docume.*$ {         return 702;     }     location ~* ^/document$ {         return 703;     }  } curl -I  website.com:8080/document 702 # 匹配702 因为正则的优先级更高,而且正则是一旦匹配到就直接退出 所以不会再匹配703server {     server_name website.com;     location ~* ^/docume.*$ {         return 701;     }      location ^~ /doc {         return 702;     }     location ~* ^/document$ {         return 703;     } } curl http://website.com/document HTTP/1.1 702 # 匹配702 因为 ^~精确匹配的优先级比正则高 也是匹配到之后支持退出server {     server_name website.com;     location /doc {         return 702;     }     location /docu {         return 701;     } } # 701 前缀匹配匹配是按照最长匹配,跟顺序无关history模式、跨域、缓存、反向代理# html设置history模式 location / {     index index.html index.htm;     proxy_set_header Host $host;     # history模式最重要就是这里     try_files $uri $uri/ /index.html;     # index.html文件不可以设置强缓存 设置协商缓存即可     add_header Cache-Control "no-cache, must-revalidate, proxy-revalidate, max-age=0"; }  # 接口反向代理 location ^~ /api/ {     # 跨域处理 设置头部域名     add_header Access-Control-Allow-Origin *;     # 跨域处理 设置头部方法     add_header Access-Control-Allow-Methods "GET,POST,DELETE,OPTIONS,HEAD";     # 改写路径     rewrite ^/api/(.*)$ /$1 break;     # 反向代理     proxy_pass http://static_env;     proxy_set_header Host $http_host; }  location ~* .(?:css(.map)?|js(.map)?|gif|svg|jfif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {     # 静态资源设置七天强缓存     expires 7d;     access_log off; }以目录去区分多个history单文件
  因为不可能每一个项目开启一个域名,仅仅指向通过增加路径来划分多个网站,比如:www.taobao.com/tmall/login访问天猫的登录页面
  www.taobao.com/alipay/login访问支付宝的登录页面server {     listen 80;     server_name taobao.com;     index index.html index.htm;     # 通过正则来匹配捕获 [tmall|alipay]中间的这个路径     location ~ ^/([^/]+)/(.*)$ {         try_files $uri $uri/ /$1/dist/index.html =404;     } }负载均衡
  基于upstream做负载均衡,中间会涉及一些相关的策略比如ip_hash、weightupstream backserver{      # 哈希算法,自动定位到该服务器 保证唯一ip定位到同一部机器 用于解决session登录态的问题     ip_hash;      server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)      server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)      server 127.0.0.1:6060;      server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)  } 灰度部署
  如何根据headers头部来进行灰度,下面的例子是用cookie来设置
  如何获取头部值在nginx中可以通过$http_xxx来获取变量upstream stable {     server xxx max_fails=1 fail_timeout=60;     server xxx max_fails=1 fail_timeout=60;  } upstream canara {    server xxx max_fails=1 fail_timeout=60; }  server {     listen 80;     server_name  xxx;     # 设置默认     set $group "stable";      # 根据cookie头部设置接入的服务     if ($http_cookie ~* "tts_version_id=canara"){         set $group canara;     }     if ($http_cookie ~* "tts_version_id=stable"){         set $group stable;     }     location / {         proxy_pass http://$group;         proxy_set_header   Host             $host;         proxy_set_header   X-Real-IP        $remote_addr;         proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;         index  index.html index.htm;     } }优雅降级
  常用于ssr的node服务挂了返回500错误码然后降级到csr的cos桶或者nginx中
  优雅降级主要用error_page参数来进行降级指向备用地址。upstream ssr {     server xxx max_fails=1 fail_timeout=60;     server xxx max_fails=1 fail_timeout=60;  } upstream csr {     server xxx max_fails=1 fail_timeout=60;     server xxx max_fails=1 fail_timeout=60; }  location ^~ /ssr/ {     proxy_pass http://ssr;     # 开启自定义错误捕获 如果这里不设置为on的话 会走向nginx处理的默认错误页面     proxy_intercept_errors on;     # 捕获500系列错误 如果500错误的话降级为下面的csr渲染     error_page 500 501 502 503 504 = @csr_location      # error_page 500 501 502 503 504 = 200 @csr_location     # 注意这上面的区别 等号前面没有200 表示 最终返回的状态码已 @csr_location为准 加了200的话表示不管@csr_location返回啥都返回200状态码 }  location @csr_location {     # 这时候地址还是带着/ssr/的要去除     rewrite ^/ssr/(.*)$ /$1 break;     proxy_pass http://csr;     rewrite_log on; }
  webp根据浏览器自动降级为png
  这套方案不像常见的由nginx把png转为webp的方案,而是先经由图床系统(node服务)上传两份图片:一份是原图png
  一份是png压缩为webp的图片(使用的是imagemin-webp)
  然后通过nginx检测头部是否支持webp来返回webp图片,不支持的话就返回原图即可。这其中还做了错误拦截,如果cos桶丢失webp图片及时浏览器支持webp也要降级为pnghttp {   include       /etc/nginx/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""   ""$proxy_host" "$upstream_addr"";    access_log  /var/log/nginx/access.log  main;    sendfile        on;   keepalive_timeout  65;    # 开启gzip   gzip on;   gzip_vary on;   gzip_proxied any;   gzip_comp_level 6;   gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;    # 负载均衡 这里可以是多个cos桶地址即可   upstream static_env {     server xxx;     server xxx;   }    # map 设置变量映射 第一个变量指的是要通过映射的key值 Accpet 第二个值的是变量别名   map $http_accept $webp_suffix {     # 默认为 空字符串     default   "";     # 正则匹配如果Accep含有webp字段 设置为.webp值     "~*webp"  ".webp";   }   server {      listen 8888;     absolute_redirect off;    #取消绝对路径的重定向     #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。     root /usr/share/nginx/html;      location / {       index index.html index.htm;       proxy_set_header Host $host;       try_files $uri $uri/ /index.html;       add_header Cache-Control "no-cache, max-age=0";     }      # favicon.ico     location = /favicon.ico {       log_not_found off;       access_log off;     }      # robots.txt     location = /robots.txt {       log_not_found off;       access_log off;     }      #      location ~* .(png|jpe?g)$ {       # Pass WebP support header to backend       # 如果header头部中支持webp       if ($webp_suffix ~* webp) {         # 先尝试找是否有webp格式图片         rewrite ^/(.*).(png|jpe?g)$ /$1.webp break;         # 找不到的话 这里捕获404错误 返回原始错误 注意这里的=号 代表最终返回的是@static_img的状态吗         error_page 404 = @static_img;       }       proxy_intercept_errors on;       add_header Vary Accept;       proxy_pass http://static_env;       proxy_set_header Host $http_host;       expires 7d;       access_log off;     }      location @static_img {       #set $complete $schema $server_addr $request_uri;       rewrite ^/.+$ $request_uri break;       proxy_pass http://static_env;       proxy_set_header Host $http_host;       expires 7d;     }       # assets, media     location ~* .(?:css(.map)?|js(.map)?|gif|svg|jfif|ico|cur|heic|webp|tiff?|mp3|m4a|aac|ogg|midi?|wav|mp4|mov|webm|mpe?g|avi|ogv|flv|wmv)$ {       proxy_pass http://static_env;       proxy_set_header Host $http_host;       expires 7d;       access_log off;     }       error_page   500 502 503 504  /50x.html;     location = /50x.html {       root   /usr/share/nginx/html;     }   } }

6128G大内存千元机!谁说千元机内存小?这五款买了不后悔!高性价比的手机向来是用户们最喜欢的,任何人都喜欢用较少的钱来买更加超值的产品!但是安卓手机有一个通病,就是手机越用越卡。这是因为安卓系统运行之后会留下缓存,这样就使手机运行不流畅。如何评价华为p20?你认为这款手机过时了吗?华为P20算不上过时,这款手机尽管发布了近1年的时间,但是仍然是目前拍照最好的手机行列之一,尤其是p20pro目前仍然是独孤求败的存在,即使是面对华为最新的mate20pro也不落未来电池是这样电池技术几秒钟充满电待机长达数月随着智能手机的普及,电池这个瓶颈就显得极为棘手!电子技术的快速发展并没有带动电池技术的发展,几十年来,电池一直拖着科技的后腿!智能手机,无人机,电动汽车都是使用锂电池。但是锂电池有左手写诗右手代码揭秘阿里巴巴技术女神女性能顶半边天,科技公司和技术领域也不例外。阿里巴巴有这样一群技术女神,她们的当中有人代码写得比男生还溜,生活也过得有声有色,她们奉行的人生哲学是快乐工作,认真生活,这也是阿里巴巴干货分享数字监控系统的核心技术数字监控相关产品的技术和发展一直是安防热点,随着技术发展,越来越的监控工程采用数字监控系统,如商场超市等地。核心技术决定着产品的竞争力,数字监控的风靡和它的核心技术是分不开的,今天华为发力,3月26日华为p30发布,拍照能力可能屠榜DXO2,3月份以来,手机各大厂商争相发力,都发布了自家的新机型。前有小米发布小米9及小米9se,vivo发布IQOO手机,后有魅族发布魅族note9。华为在MWC2019大会上风光无限预见未来NLP将迎来黄金十年来源微软研究院AI头条本文共8800字,建议阅读10分钟。本文从多个AI领域的前瞻视角向出发,试图描绘一幅未来科技蓝图。导读自1998年成立以来,微软亚洲研究院一直致力于推动计算机特朗普社交平台因战略问题未起水花侨报综合报道前总统特朗普的社交平台TruthSocial在苹果应用商店推出大约两周后,几乎没有对媒体市场产生任何影响。平台于2月21日正式进入市面,不到20天后,TruthSocitvOS15。4Beta新功能视频播放器有了新调整本周,苹果向开发者发布了第一个tvOS15。4测试版进行测试,值得一提的是,AppleTV还提供了一些新功能。首先,测试版说明指出,tvOS15。4引入了对强制WiFi网络的支持,无广告的机皇!当贝超级盒子MAX1评测8K视频也不卡一前言无广告的顶级智能盒子自从1939年第一台黑白电视诞生以来,电视这个物件已经陪伴我们将近一个世纪的光景。从早些年的CRTLCDOLED发展至今的QLED等各种显示技术,在电视本解放双手,拒绝繁琐,塞宾SmartMike无线麦克小身材大能量作为自媒体爱好者,之前一直都是拿着手机支架或者自拍杆来完成视频的拍摄,虽然能解决基本的拍摄需求,但是想要让视频质量更加完美,观众们更清晰的听到我的声音,单靠手机确实有些力不从心。市
电脑开机无显示,不是主板也不是CPU问题,而是它坏了Hello大家好,我是兼容机之家的小牛!电脑出现故障,对于我们搞机的人来说,是很平凡的一件事。有的故障可能只是一件小麻烦,像系统坏了,进不了系统,开机一段英文字母之类。之所以说这些美日企业撤出中国,生产成本恐将提高,老百姓买不到便宜电脑了?Hello大家好,我是兼容机之家的小牛!近几天,最火热的新闻莫过于美日企图将制造业回流和撤出中国。今天小牛就跟大家聊一聊,此举对我们日常生活,尤其电脑价格会有什么影响?毕竟电脑芯片电脑老是卡顿,导致工作时心情烦躁?更换一个硬件让你的电脑起飞Hello大家好,我是兼容机之家的小牛!电脑老是卡顿,导致工作时心情烦躁?更换一个硬件固态硬盘,就能让你的电脑起飞。如果是新装的电脑,一般都会配上一块固态硬盘。配上固态以后,系统的选主板别问问就是迫击炮?这话落伍了!因为华硕新出了款主板Hello大家好,我是兼容机之家的小牛!距离去年年中AMD锐龙3000系列处理器发布已经过了小半年的时间,在这段时间里,锐龙3000系列处理器逐渐完成从高端到低端市场的布局。而针对买到就是赚到,抚州五菱之光购车优惠0。05万元工作的不顺心,生活的烦恼,是时候换辆车改变一下心情了,近期五菱汽车抚州国鼎销售中心店10。3010。30,购车优惠0。05万元,期待您的光临促销时间2021年10月30日至2021抚州宝骏310限时特惠0。16万元,欢迎莅临赏鉴汽车报价早知道五菱汽车抚州国鼎销售中心店,宝骏310限时特惠大酬宾,10。3010。30直降0。16万元,有购车意向的朋友不妨亲自去试驾一下,店铺地址抚州市文昌大道与迎宾大道交叉口八万左右的SUV选哪款?颜值性能俱佳的宝骏RS3,你爱了吗如今购车的群体越来越年轻化,各车企应对市场变化也做出了一些改变,推出了更多符合年轻人审美和消费习惯的车型,宝骏RS3就是这样一款车,以青量级玩乐SUV为定位,售价区间为6。38万9抚州五菱荣光小卡热销中,降价0。155万元今天给大家推荐一款车它就是五菱荣光小卡,特别适合日常使用,据悉五菱汽车抚州国鼎销售中心店即日起到10月30日限时回馈用户,限时特惠0。155万元,对五菱荣光小卡感兴趣的朋友不妨亲自抚州宝骏510直降0。1万元,欢迎到店赏车本周宝骏510最新报价五菱汽车抚州国鼎销售中心店即日起到10月30日限时促销,直降0。1万元,如此优惠的降幅,大家可千万不要错过,店铺地址抚州市文昌大道与迎宾大道交叉口促销时间20抚州宝骏E200可试乘,降价0。91要现车?要省钱?要省心?要优惠?要豪礼?今天它们都来了!五菱汽车抚州国鼎销售中心店宝骏E200限时促销,10月30日10月30日,限时特惠0。91,欢迎您到店开启更多惊喜福利,店铺一千多的显卡该怎么选?兼容机之家通过这两款台式电脑告诉你Hello大家好,我是兼容机之家的小牛。老黄家的Super系列显卡在性能上都有着不小的提升,就拿GTX1650Super来说,终于摆脱了智商检测卡的称呼,打败了RX580成为千元级