国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于多應(yīng)用域名路由的PR,是否應(yīng)該不經(jīng)過nginx

ric

之前一直在用tp的域名路由做一些應(yīng)用綁定,在搭建站點的時候,考慮了webman,也在尋找域名路由的替代方式。后來找到了http://wtbis.cn/q/5908 這個求助貼,也出來了http://wtbis.cn/plugin/11 這個插件,但是總覺的哪里不對,然后發(fā)現(xiàn)路由上,我還是得加上應(yīng)用的路由名稱,比如toadmin應(yīng)用,我還是得訪問 /toadmin/config 才能訪問,如果要省略掉/toadmin,那么還得在nginx上做代理。 嗯。。。 我好像就是想去掉nginx,結(jié)果還是不得用上?

然后大概看了下原理,我覺的對這個需求來說,更多的是想讓訪問域名直接訪問到自己想要的應(yīng)用中,那么應(yīng)該是在請求的路由中進行更改,而非直接限制尋找的應(yīng)用 app。

所以我重寫了path方法,這個方法先進行了是否開啟域名路由判斷,然后再進行路由的尋找,如果有配置,那么自動更改請求的路由,比如 abcd.com 域名我指向了 toadmin, 那么前端訪問abcd.com/config的時候,我自動在abcd.com后面加/toadmin,就變成了 abcd.com/toadmin/config, 這樣其實就是實現(xiàn)了限制abcd.com訪問toadmin應(yīng)用。

而對于開啟路由配置模式的來說,每個不同應(yīng)用路由需要用分組:Route::group('/toadmin', function () {}) 包起來而已。 當(dāng)然如果有人,嘗試把Route::group('/toadmin', function () {}) 里面的子路由寫向了 touser 應(yīng)用的控制器,那么通過abcd.com 域名也是能訪問到的,而我覺的這個是允許的,而且有必要的,因為的確會存在一些公共控制器的情況,比如toadmin、touser都有個路由 域名/config 讀取 行政區(qū)域數(shù)據(jù), 那么這個控制器是可以寫在common應(yīng)用中的,而通過 路由的形式進行指向,而不是需要必須在toadmin、touser上各寫一個,當(dāng)然如果開發(fā)人員亂用,我覺的是開發(fā)人員本身不規(guī)范導(dǎo)致的問題。

這個迭代應(yīng)該是替代多應(yīng)用域名綁定插件的方式,而且實現(xiàn)了不需要通過nginx代理即可實現(xiàn)短url。

已提交PR( https://github.com/walkor/webman/pull/384 ) ,看看大佬評估下,是否能合進去

1379 1 0
1個回答

walkor 打賞

重寫path這個在nginx里就一句配置的事情,就不在webman做了。
如果有需要webman重寫path,像你pr那樣改下 support\Request.php 類就好了

  • ric 2023-09-10

    嗯嗯,好的。我只是搜索了一下,看見thinkphp那么轉(zhuǎn)過來的基本上都遇到了這個問題,這個應(yīng)用不多是在nginx里是一句配置的事,但在整個公司的統(tǒng)一研發(fā)規(guī)范上的確是很方便的一件事,它使我們在docker上作為統(tǒng)一的開發(fā)環(huán)境的時候,不需要添加另外的容器,實現(xiàn)了功能,同時在生產(chǎn)環(huán)境的時候,不需要運維多去專注轉(zhuǎn)發(fā)的配置問題,針對復(fù)雜的集群項目,一套代碼可能針對了十幾個端的應(yīng)用,所以我會覺的,在配置指向的時候就實現(xiàn)了轉(zhuǎn)發(fā)功能,而不再特意迭加一層nginx是非常棒的。

    雖然不合并到webman,但后面tp轉(zhuǎn)過來的同行有需要的可以去PR( https://github.com/walkor/webman/pull/384/commits/cfa8016945113eff2fc55b31ca992dcf415e045f )中自取吧。

    1、在support\Request.php添加
    //重寫獲取path用于多路由
    public function path()
    {
    if (!isset($this->_data['path'])) {
    if(config('domain.enable', false)){
    //如果開啟了域名路由
    $uri = $this->uri();
    $bind = config('domain.bind', []);
    $domain = $this->host(true);
    if(isset($bind[$domain])) {
    $uri = '/' . $bind[$domain] . $uri;
    }
    }
    $this->_data['path'] = (string)\parse_url($uri, PHP_URL_PATH);
    }
    return $this->_data['path'];
    }

    2、添加配置文件 config/domain.php
    <?php
    return [
    //是否開啟域名路由
    'enable' => true,
    // 多應(yīng)用綁定關(guān)系
    'bind' => [
    // 'abc.com' => '', // 不屬于任何應(yīng)用
    'abcd' => 'touser', // 綁定到touser應(yīng)用
    'abce' => 'toadmin', // 綁定到toadmin應(yīng)用
    ]
    ];

  • wocall 2023-09-10

    做圖折騰一晚上,沒整成功,放棄了。

  • ric 2023-09-10

    做什么圖??

  • ric 2023-09-10

    你是說昨天折騰一晚上吧?哈哈哈,不要走,繼續(xù)。 用我上面那個,寫個方法就實現(xiàn)TP那樣的了

  • wocall 2023-09-11

    嗯嗯。我這沒有TP,只有nginx+php+webman。好幾個應(yīng)用都計劃放webman里,分域名,沒折騰出來。

年代過于久遠,無法發(fā)表回答
??