首页 > 解决方案 > docker-compose nginx 找不到 symfony 资产的路由

问题描述

SO中有类似的问题,但不适用于这个特定问题。

工具:docker-compose 1.21.2;symfony 3.4;nginx 1.10.3

我有几个分离的容器(“每个容器应该只有一个问题”)。除了在浏览器中获取 symfony (3.4) 应用程序的资产外,一切正常。定义的路线有效,模板正确呈现,只有资产是问题。除了使用相同的设置但在本地(没有容器)的开发机器中提供服务之外,没有任何问题。

使用卷它可以工作,但我希望将它们用于生产,因此文档表明https://docs.docker.com/compose/production/#modify-your-compose-file-for-production您可能需要进行更改:

事实:

相关部分docker-compose.yml

version: "2"
services:
    site:
        ...
        working_dir:
            /var/www/html/site
    site_webserver:
        ...
        ports:
           - <port>:80
        depends_on:
           - site
        links:
           - site

相关部分nginx.conf

server {
    listen 80;
    server_name "";
    root /var/www/html/site/web;

    location / {
        try_files $uri /app.php$is_args$args;
    }  

    location ~ ^.*/(app_dev|config)\.php(/|$) {
        fastcgi_pass lockate_site:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $document_root;
    }
}

标签: phpsymfonydockernginxdocker-compose

解决方案


你应该有现有的文件/var/www/html/site/web/css/main.css!你有吗?

Nginx 配置不应将此请求 /css/main.css 传递给 PHP 代码。它应该简单地将现有文件发送到浏览器。我想你有这个文件,但是在另一个路径上。

你应该为它持有正确的 nginx 配置,或者将 assets-files 放在 /var/www/html/site/web/ 目录中


推荐阅读