美文网首页
nginx|Yii2.0路由管理实现版本控制

nginx|Yii2.0路由管理实现版本控制

作者: LeeBoot | 来源:发表于2019-05-31 15:46 被阅读0次
由于公司并发上来了,改基础的项目的架构,
由nginx+apache+php改成nginx+php-fpm+php,涉及到项目中的接口版本控制的架构和index.php伪静态需要,进行了重写改变套餐,以下是示例

仅使用nginx作为转发及伪静态index.phpurl重写,实现版本控制
可优化点1.nginx中的@phphtaccess块会携带(v\d)在request,
如果能在这个@phphtaccess块就去掉,就可以去掉urlManager中路由转化了

目录结构示例

image.png

modules参数示例

$version = isset($_GET['v_api'])?$_GET['v_api']:'v0';
return [
    'nice' => [
        'class' => 'app\modules\nice\NiceModule',
    ],
    'app'   => [
        'class' => 'app\modules\\'.$version.'\app\AppModule'
    ],
];

urlManager示例

'urlManager'   => [
            'enablePrettyUrl' => true,
            'enableStrictParsing' => false,  //不启用严格解析
            'showScriptName'  => false,
            'rules'           => [
                'GET /app/down.html' => '/mobile/sem/start-down',
                'GET /lei/<type:[a-zA-Z]+>' => '/mobile/home/category-list',
                '<version>/app/<controller:[\w-]+>/<action:[\w-]+>' =>  '/app/<controller>/<action>',
                '<version>/app/<controller:[\w-]+>' =>  '/app/<controller>',
            ],
        ],

nginx配置示例

server {
        listen       80;
        server_name  100nice.com;
        root   G:\code\project\web;
        index  index.htm index.html index.php;
        
        location / {
            if ($request_method = 'OPTIONS' ) {
                add_header Access-Control-Allow-Origin "*";
                add_header Access-Control-Allow-Methods "POST,GET,PUT,OPTIONS,DELETE";
                add_header Access-Control-Max-Age "3600";
                add_header Access-Control-Allow-Headers "Origin,X-Requested-With,Content-Type,Accept,Authorization,No-Cache,If-Modified-Since,Pragma,Last-Modified,Cache-Control,Expires,token,X-E4M-With";
                add_header Content-Length 0;
                add_header Content-Type text/plain;
                return 200;
            }
            default_type    text/html;
            
            location ~* /(v\d) {
                if ($is_args = "?") {
                    rewrite /(v\d+)/(.*) /$2?$args&v_api=$1 last;
                }
                if ($is_args = '') {
                    rewrite /(v\d+)/(.*) /$2?v_api=$1 last;
                }
            }
            
            #return 200 $uri;
            try_files $uri @phphtaccess;
        }
        
        location @phphtaccess {
            rewrite ^(.*)$ /index.php last;
        }
        
        
        location = /favicon.ico {
            try_files $uri = 204;
            log_not_found off;
            access_log off;
        }
        
        location = /robots.txt {
            allow all;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
        
        
        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;
            include        fastcgi_params;
        }
    }
  • 也可能是整体的架构有问题,整体逻辑可以改,如有好的架构,可以共同分享!!

相关文章

  • nginx|Yii2.0路由管理实现版本控制

    由于公司并发上来了,改基础的项目的架构, 由nginx+apache+php改成nginx+php-fpm+php...

  • Dubbo Admin 管理控制台

    管理控制台为内部裁剪版本,开源部分主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能...

  • 静态路由汇总

    1. 静态浮动路由 主备(也叫冗余备份) 基于控制层面实现 备份链路写静态路由改大管理距离,俗称浮动静态路由 基...

  • go实现http服务二

    比第一个版本更加底层。通过ServeMux来控制路由的访问,ServeMux本质上只是一个路由管理器,而它本身也实...

  • 第十三章 版本管理

    版本管理指项目整体版本的演变过程管理。 版本控制指借助版本控制工具追踪代码的每个变更。 一、版本管理 版本管理关心...

  • 网络编程(五)IP协议-下

    一、路由控制 路由控制表(Routing Table):保存真正的数据发送目标地址,指明路由器或主机。实现IP通信...

  • vue 使用 transition + router + kee

    该方案可以实现路由动画切换的同时,控制是否缓存路由组件

  • How to use Git

    版本控制 版本控制就是控制版本,版本控制系统帮助控制(管理)某个事物(通常指源代码)的不同版本现在流行的版本控制:...

  • react 笔记

    方案实现优势缺点基于 Nginx的路由分发通过 HTTP 服务器的反向代理来实现,通过路由前缀的不同将用户的请求指...

  • 9.Nginx访问控制(ngx_http_access_modu

    Nginx访问控制 要实现用Nginx对WebServer做访问控制,常见的有两种方式 基于IP的访问控制 : h...

网友评论

      本文标题:nginx|Yii2.0路由管理实现版本控制

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