美文网首页
nginx location 总结

nginx location 总结

作者: tonyemail_st | 来源:发表于2020-11-29 18:23 被阅读0次
    匹配之前,URL会被预处理
    • 解码
    • 将包含.和..的相对路径去除
    • 将//两条斜线合并成一条/
    匹配规则
    • 前缀字符串,正则表达式,两种location
      • ~*不区分大小写
      • ~区分大小写
    • 扫描所有prefix strings, remember this longest
    • 扫描所有regular expression, 匹配则停止
    • 如果没有regular expression匹配,最长前缀匹配的location将被使用
    特例情况
    • 如果最长前缀location使用^~作为修饰符,则不再扫描正则表达式
    • 如果prefix strings使用=作为修饰符,并且完成匹配,则不再扫描其他location
    nginx_location.png
    场景举例

    简介: 这个是一个前后端分开部署的项目,前端是SPA,其中有些js静态文件是来自后端,nginx需要分清楚哪些是后端路由,哪些是前端路由,哪些是静态文件路径。

    1. 静态文件。BASE_PATH/static (前端打包后的js,css,images以及各个模块的js文件,通过http://host/static/xxx访问)
    2. 前端路由。包含一些请求路径
    • /template/edit/1
    • taskflow/home/1/
    • ...
    1. 后端路由。可穷举
    • /static/core/js/paas_api.js
    • /jsi18n/gcloud/
    • ...
    upstream sops_server {
        server sops:8000;
    }
    
    server {
    
        listen 80;
        server_name stage.xxx.com;
        root /app/bk-sops/static/stage/dist/;
        index index.html;
        access_log /app/nginx_log/access.log;
        error_log /app/nginx_log/error.log;
    
        location / {
            root /app/bk-sops/;
            index index.html;
            rewrite ^/.*$ /index.html break;
        }
    
        location /static/ {
            root /app/bk-sops/;
        }
    
        location ~ (/static/core/js/paas_api.js|account/|jsi18n|api|core/api|config/api|apigw|common_template/api|template/api/|taskflow/api/|appmaker/|pipeline/|analysis/|periodictask/api/) {
            proxy_pass http://sops_server;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $host;
            proxy_redirect off;
        }
    
    }
    
    1. 后端路径可穷举,在整个server block里面不使用精准匹配和修饰符^~的情况下,正则表达式的优先级最高,因此第三个location列出所有后端路由
    2. 静态文件使用第二个location,最长prefix strings
    3. 其他的前端路由被重定向到index.html

    相关文章

      网友评论

          本文标题:nginx location 总结

          本文链接:https://www.haomeiwen.com/subject/lyukwktx.html