Php 如何使用NGINX在docker中设置动态子域
基本上,我需要有动态子域,因此站点应该在Docker中的任何子域中可用,如下所示:Php 如何使用NGINX在docker中设置动态子域,php,docker,nginx,Php,Docker,Nginx,基本上,我需要有动态子域,因此站点应该在Docker中的任何子域中可用,如下所示: admin.example.com adrian.example.com files.example.com 我没有固定数量的子域,所以我不能将它们全部放在hosts文件中 服务器名称也没有帮助:Server\u name www.$hostname 他们都应该指向同一个网站。 我尝试了jwilder反向代理,但无法正确设置 我有一个docker compose.yml和Dockerfile 有人能给我一个我可以
admin.example.com
adrian.example.com
files.example.com
我没有固定数量的子域,所以我不能将它们全部放在hosts文件中
服务器名称也没有帮助:Server\u name www.$hostname代码>
他们都应该指向同一个网站。
我尝试了jwilder反向代理,但无法正确设置
我有一个docker compose.yml
和Dockerfile
有人能给我一个我可以使用的工作代码,然后根据我的需要修改它吗。如果我还需要更改我的主机文件
我做了一些研究,但我的nginx和docker知识还不够
Nginx.conf
Dockerfile
docker compose.yml
不确定您在使用jwilder的反向代理时尝试了什么,但失败了什么,但这是一种很好的解决当前问题的方法,无需处理nginx配置和复杂的组合配置
这是一个工作代码,您甚至不必更改主机文件
version: '3.7'
services:
nginx:
image: jwilder/nginx-proxy
ports: ["80:80"]
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
environment:
DEFAULT_HOST: fallback.lvh.me
api:
image: dannyben/whoami
environment:
MESSAGE: I am the API
VIRTUAL_HOST: "*.lvh.me"
web:
image: dannyben/whoami
environment:
MESSAGE: I am the WEB
VIRTUAL_HOST: "www.lvh.me"
要使其正常工作,必须首先启动nginx代理:
$ docker-compose up -d nginx
只有这样,后端服务
$ docker-compose up -d api web
然后,您可以访问www.lvh.me
查看web后端,并访问任何其他.lvh.me
查看API后端
此外,您可以为VIRTUAL\u HOST
环境变量提供多个通配符主机,以便它同时支持本地开发环境和生产环境,如下所示:
VIRTUAL_HOST: "*.lvh.me,*.your-real-domain.com"
需要注意的是,为了在生产环境中工作,您的DNS也应该设置为使用通配符子域
在本演示中,lvh.me
只是将所有流量转发到127.0.0.1,然后再转发到您的nginx,nginx再将流量转发到您的实际应用程序。您能提供您目前编写的代码吗?@kuba,完成:)作为对未来问题的建设性建议:如果您将代码压缩到理解和再现问题所需的最低限度,将有助于其他人帮助您。作为额外的奖励,它还将帮助您更好地理解它。哦,实际上是lvh.me
帮助解析地址。我正在更改虚拟主机的名称。这一点很重要,因为它有帮助。请注意,我在最后添加了一些关于生产中的通配符和lvh.me的使用的更多信息。我们需要什么样的DNS记录来允许这种设置?
$ docker-compose up -d nginx
$ docker-compose up -d api web
VIRTUAL_HOST: "*.lvh.me,*.your-real-domain.com"