我在VM中运行了一个Symfony 4 Web应用程序。
我用bin/console server:start 0.0.0.0:8000
启动应用程序。我在VM中打开了端口8000,在主机上运行了nginx代理服务器。
由于主机上运行了很多虚拟机,我设置了nginx来转发请求,如下所示:
https://host/project1/foo/bar
- > http://vm1:8000/foo/bar
https://host/project2/subpath
- > http://vm2:8000/subpath
问题是Symfony没有为资源甚至路由生成正确的路径,因为基本路径不同(主机代理上的/projectX/path
而不是VM本地服务器上的/path
)。
我想绕过这个想法是让VM中的每个子项目都使用自己的自定义基本路径(例如http://vmX:8000/projectX/
)运行。这样,我可以生成正确的路径,而Router::setTrustedProxies()
负责生成URL。
问题是:如何配置Symfony的嵌入式PHP服务器以使用路径前缀运行?我(我想)知道如何使用在VM上运行的Web服务器来完成它,但我更愿意避免使用它。
谢谢!
像这样的东西?
server {
listen 80;
server_name foobar.com;
location / {
proxy_pass http://127.0.0.1:18080;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /newsletter/ {
rewrite /newsletter/(.*) /$1 break;
proxy_pass http://127.0.0.1:18081;
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这里我有2个应用程序:/ - > wordpress,/ newsletter < - symfony app
Symfony应用程序在docker容器内运行。