nginx / symfony маршрут к публичной папке / папке стилей не работает - PullRequest
0 голосов
/ 29 марта 2020

я впервые настраиваю nginx для проекта symfony (используя docker).

Все было хорошо для маршрута к моему индексному файлу. Но теперь мне нужно использовать маршрут к public / styles /*****.css и другим, как public / js, et c.

Я не могу запустить это. Он всегда говорит мне, что маршрут не разрешен с symfony или при других попытках с nginx не разрешен, HTML500.

Это моя NGINX конфигурация:

server {
 server_name ~.*;

 location / {
     root /usr/src/app;
     try_files $uri /index.php$is_args$args;
 }

 location ~ ^/index\.php(/|$) {
     client_max_body_size 50m;

     fastcgi_pass php:9000;
     fastcgi_buffers 16 16k;
     fastcgi_buffer_size 32k;
     include fastcgi_params;
     fastcgi_param SCRIPT_FILENAME /usr/src/app/symfony/public/index.php;
 }

 error_log /dev/stderr debug;
 access_log /dev/stdout;
}

Это то, что я пытаюсь назвать:

http://localhost:8000/styles/main.css
http://localhost:8000 -> works proper, loading my index route

Это часть моей базы. html .twig

<link href="styles/main.css" rel="stylesheet" type="text/css">

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Нашел решение, просто добавил эти строки до того, как появилось первое местоположение

location /styles {
    root /usr/src/app/symfony/public/;
 }
0 голосов
/ 29 марта 2020

Если файлы находятся в / usr / src / app / public / styles /, измените значение директивы root

http://localhost: 8000 / styles / main. css принимает файлы из "{root} /styles/main.css" в соответствии с директивой nginx root do c и вашей "{root} / styles / main. css "is" / usr / src / app / styles / "сейчас.

ОБНОВЛЕНИЕ:

Если бэкэнд может переводить / style в / public / styles затем вам нужны прокси-запросы для бэкэнда (см. proxy_pass или фрагменты поиска для прокси), иначе вам нужно переместить индекс. php в publi c и изменить root, иначе переместить / public / styles в / Стили в вашей локальной файловой системе.

Прокси получает больше смысла, так как вы сказали, что для бэкэнда вы использовали отдельные docker контейнеры. (Это можно сделать с помощью , связав контейнеры и проксировав с помощью proxypass http://other-docker-container-name:XXXX, где XXXX - это открытый порт в другом контейнере)

ОБНОВЛЕНИЕ 2: Как я Первоначально сказал, что автору вопроса нужно было установить другое значение для root, и, как я сказал в комментарии, правильное значение - /usr/src/app/symfony/public

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...