如何在PHP脚本执行旁边使用Caddy提供静态文件?(Symfony)

hec6srdp  于 2022-11-16  发布在  PHP
关注(0)|答案(1)|浏览(102)

我有一个基于docker-compose的服务器设置运行PHP,Postgres和Caddy作为Web服务器/反向代理与自动SSL,服务于一个PHP应用程序(框架Symfony 3/Sylius 1.5)与php5-fpm。
到目前为止,它运行得非常好,但 * 不 * 与任何静态文件,如CSS,图像,JS等,虽然放置了file_server指令。任何静态内容得到404。
我的应用程序被复制到文件夹/srv/app中,其中/srv/app/public包含index.php/srv/app/public/assets包含静态文件(包括几个子文件夹)。
这是我的Caddyfile:

{$SERVER_NAME}

log

route {
    root * /srv/app/public
    php_fastcgi unix//var/run/php/php-fpm.sock
    encode zstd gzip
    file_server
}

我尝试为file_server指令指定文件夹,如:
file_server assets/

file_server assets {
}

每个在X1 M7 N1 X-分支内。
但这样一来,凯迪不会提供任何东西,并给500人。
我该如何解决这个问题?

vnjpjtjt

vnjpjtjt1#

对我来说,像这样的事情工作(为什么这样,我不知道)。
目录为:

/projects/site
-- static
----- jquery
--------- jquery.js
index.php

网站可通过以下方式访问:http://1.2.3.4:8000/site
静态文件的请求如下:http://1.2.3.4:8000/site/static/jquery/jquery.js

:8000 {
        root * /projects/site

        @path {
           not path /site/static*
           path /site*
        }

        log {
            output file /var/log/caddy/site.log
        }

        handle_path /site/static* {
            root * /projects/site/static
            file_server
        }

        php_fastcgi @path unix//run/php/php5.6-fpm.sock
}

相关问题