choicky / itlaws.cn-comments

itlaws.cn's comments system powered by utterances
0 stars 0 forks source link

posts/2020/caddy-v2-caddyfile/ #7

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

Caddy V2 Caddyfile 配置 - IT & Laws

Caddy web服务器曾经以自动启用https、配置简单为卖点,caddy v1 深受欢迎;官方顺势退出 v2 系列,v2系列成功地把“配置简单”这个优点给去掉了,v1系列的Caddyfile文件不能直接用到v2系列。 官方最近已经完全取缔了 v1,因此,只能硬着头皮在ubuntu安装上 v2,最近觉得 v2 能替代

https://itlaws.cn/posts/2020/caddy-v2-caddyfile/

Y-A-K-E commented 3 years ago

emmm. 大佬. caddy2 伪静态规则无法完美用于thinkphp6 (多应用模式)

/ 或者空域 访问index.php正常

*.yge.me {
    root  * /data/www/newblog/public
    tls {
        import dnspod_token
    }
    try_files {path} {path}/ /index.php?s={uri}
    php_fastcgi 127.0.0.1:9000
    file_server /static/*   
}

如果这样用. 大部分地方都是对的.

唯一蛋疼翻页面 www.yge.me/?page=2

抛出404提示控制器不存在.

如果改成 try_files {path} {path}/ /index.php/{uri}

Y-A-K-E commented 3 years ago

翻页能用了. 但是

这种路径无法正常解析(访问都是首页.)_ www.yge.me/category/blog.html

实际路径 www.yge.me/index.php/blog(应用名)/category(控制器)/index/cid(参数)/blog.html

www.yge.me/api api应用.

这种多应用

调了很久.没搞定.

大佬麻烦研究下.caddy文档看不太明白...

choicky commented 3 years ago

你把thinkphp6 之前能用的配置文件发给我看看;另外,也把 caddy v2 目前的配置文件发给我看看。

Y-A-K-E commented 3 years ago

好的,麻烦辛苦帮我看看.

原来caddy 1 配置文件

*.yge.me: {
    root /data/www/newblog/public
    tls {
        dns dnspod
    }
    gzip
    fastcgi / 127.0.0.1:9000 php    
    rewrite {
        to {path} {path}/ /index.php/{uri}
    }

}

tp6 各方面都非常正常,因为caddy1无法续签证书了,没办法迁移caddy2

现在caddy2 配置文件,我调了半天没搞定,百度了下,给结果到你blog 是参考你的.

*.yge.me {
    root  * /data/www/newblog/public
    tls {
        import dnspod_token
    }
    try_files {path} {path}/ /index.php?s={uri}
    php_fastcgi 127.0.0.1:9000
    file_server /static/*   
}

file_server /static/* 这行必须加,不加前台静态文件无法显示.

总之大部分地方都是正常的. 就是无法获取翻页.

我博客现在一翻页就抛出404,提示控制器不存在. www.yge.me/?page=2


如果改 try_files {path} {path}/ /index.php?s={uri} 改成 try_files {path} {path}/ /index.php/{uri}

只是首页的翻页可用. 不过其他伪静态全部失效.

choicky commented 3 years ago

试一下这个看看。保留和删除/static/* 的情况都试一下

*.yge.me {
    root  * /data/www/newblog/public
    tls {
        import dnspod_token
    }

    @tp6_rewrite {
         not file 
         path_regexp tp6_rewrite '(.*)' 
    }
    rewrite @tp6_rewrite index.php/{re.tp6_rewrite.1}

    php_fastcgi 127.0.0.1:9000
    file_server /static/*   
}
Y-A-K-E commented 3 years ago

你好,还是不行.

这个效果 = try_files {path} {path}/ /index.php/{uri}

不知道是不是php_fastcgi 这里带了重写的代码.

我再研究研究.

choicky commented 3 years ago

保留你原来的 caddy v2 的配置。你在 thinkphp v6 的配置文件中,设置

'pathinfo_fetch' => ['ORIG_PATH_INFO', 'REDIRECT_PATH_INFO', 'REDIRECT_URL','REQUEST_URI'],

也就是增加 'REQUEST_URI'

如果问题还没解决,我也就没办法咧。

Y-A-K-E commented 3 years ago

跟踪了下 服务器进程运行后自动生成的savejson文件 发现php_fastcgi 会自带rewirte.

经过反复测试总算解决了. 谢谢大佬~

*.yge.me {
    root  * /data/www/newblog/public
    tls {
        import dnspod_token
    }

    @tp6_rewrite {
         not file 
    }

    route {
        file_server /static/*   
        rewrite @tp6_rewrite  index.php/{uri}
    }

    @phpFiles {
        #path *.php
    }
    reverse_proxy @phpFiles  127.0.0.1:9000 {
        transport fastcgi {
            split .php
        }
    }

}
choicky commented 3 years ago

@Y-A-K-E 厉害了,👍 。