使用symfony遇到url生成问题;使用docker-compose运行php,nginx和postgreSQL。
docker-compose.dev.yml
services:
php:
volumes:
- '.:/srv'
environment:
- SYMFONY_ENV=dev
front:
environment:
- VIRTUAL_HOST=localhost
- VIRTUAL_PORT=8080
ports:
- 0.0.0.0:8080:80
volumes:
- ./web:/srv
- /keys/reports.crt:/certs/domain.crt:ro
- /keys/reports.key:/certs/domain.key:ro
正确设置nginx,允许我访问localhost:8080
- http 200 OK
问题是,symfony和twig没有正确使用此url。 e.g。
index.html.twig
<link rel="stylesheet" type="text/css" href="{{ url }}{{ asset('email/web/styles/main.css') }}?v=1">
输出,错误的方案,并不包括8080端口。
一个建议是将这些变量添加到.env
文件
SERVER_HOST=localhost
SERVER_SCHEME=http
SERVER_PORT=8080
然而这没有效果。
symfony config_dev.yml
没有任何指定https或不同端口的内容,基本配置也是如此。
任何想法如何使这个工作,Symfony没有从nginx获得该计划?
Intellij Xdebug,在 $ _ SERVER
中显示[SYMFONY__SERVER__HOST] =&gt;本地主机
由于
答案 0 :(得分:2)
这可能是因为nginx正在侦听容器内的端口80,这使得symfony生成url,就像访问端口也是端口80一样。
您可以尝试的一件事是在配置中将framework.assets.base_urls
设置为http://localhost:8080/
。这允许您定义用于所有资产URL的基本URL。您还应删除twig文件中的{{ url }}
部分,因为资产功能会为您添加此内容。
framework:
assets:
base_urls:
- 'http://localhost:8080/'
有关详细信息:https://symfony.com/doc/current/reference/configuration/framework.html#base-urls
答案 1 :(得分:0)
您的nginx
配置需要具有正确的server_name
server {
server_name _;
server_alias myapp.dev;
}