如何将 nginx 配置为使用 2 个 docroots(具有不同的主机名)和 ddev
How can I configure nginx to use 2 docroots (with different hostnames) with ddev
我想在 ddev 网络容器中使用 2 个网站,但找不到如何正确配置 nginx。
我已将 additional_hostname 设置为 site-a 和 site-b 以允许我使用 site-a.ddev.site 和 site-b.ddev.site 访问网站。网站位于不同的本地目录 site-a 和 site-b。
如何为 nginx 定义 "sites-available" 和 "sites-enabled" 配置?
在文档中我只找到了创建 .ddev/nginx-site.conf 文件的方法,但是这样我只能配置一个网站。
我知道我可以 "ddev ssh" 进入容器并手动配置它,但是当我签出项目并制作 "ddev configure" 和 "ddev start" 时它应该自动配置。
两个不同的主机名真的很简单,你只需在 .ddev/config.yaml 中使用 additional_hostnames
或 additional_fqdns
。参见 docs。
但是从你问题的上下文来看,我假设你想在 nginx 配置中有两个不同的 docroots,它们响应不同的主机名。如果是这样,这里有一些选项:
- 只需使用两个不同的 ddev 项目。如果这两个项目的代码还不是单存储库且紧密耦合,这是最简单的技术。
- 添加一个 .ddev/nginx-site.conf 来覆盖 nginx 配置。 (这是 docs). There is an example of the exact technique you want in https://github.com/drud/ddev/issues/1889#issuecomment-543306759 中的 "legacy" 技术 - @jcrichto 像这样向默认配置添加了一个额外的 http 服务器(但请阅读整个问题):
#######################################################
# EXAMPLE SITE ADDED TO DEFAULT NGINX
# THIS ASSUMES server_name: matches a name added to
# additional_hostnames: in your config.yaml
#
# CANADA - EN
#######################################################
server {
listen 80;
server_name ca.example.com.ddev.site;
#redifne your root
root /var/www/html/lang/en_ca;
include /etc/nginx/nginx_default.conf;
# this directive is unique to our set up, but demonstrates
# you can do more directives per site like this
location ~ \.php$ {
root /var/www/html/lang/en_ca;
}
}
在 https://github.com/drud/ddev/issues/1850#issuecomment-547461968 中以相同的方式解决了相同的问题以获得更多上下文。
我想在 ddev 网络容器中使用 2 个网站,但找不到如何正确配置 nginx。 我已将 additional_hostname 设置为 site-a 和 site-b 以允许我使用 site-a.ddev.site 和 site-b.ddev.site 访问网站。网站位于不同的本地目录 site-a 和 site-b。
如何为 nginx 定义 "sites-available" 和 "sites-enabled" 配置? 在文档中我只找到了创建 .ddev/nginx-site.conf 文件的方法,但是这样我只能配置一个网站。
我知道我可以 "ddev ssh" 进入容器并手动配置它,但是当我签出项目并制作 "ddev configure" 和 "ddev start" 时它应该自动配置。
两个不同的主机名真的很简单,你只需在 .ddev/config.yaml 中使用 additional_hostnames
或 additional_fqdns
。参见 docs。
但是从你问题的上下文来看,我假设你想在 nginx 配置中有两个不同的 docroots,它们响应不同的主机名。如果是这样,这里有一些选项:
- 只需使用两个不同的 ddev 项目。如果这两个项目的代码还不是单存储库且紧密耦合,这是最简单的技术。
- 添加一个 .ddev/nginx-site.conf 来覆盖 nginx 配置。 (这是 docs). There is an example of the exact technique you want in https://github.com/drud/ddev/issues/1889#issuecomment-543306759 中的 "legacy" 技术 - @jcrichto 像这样向默认配置添加了一个额外的 http 服务器(但请阅读整个问题):
#######################################################
# EXAMPLE SITE ADDED TO DEFAULT NGINX
# THIS ASSUMES server_name: matches a name added to
# additional_hostnames: in your config.yaml
#
# CANADA - EN
#######################################################
server {
listen 80;
server_name ca.example.com.ddev.site;
#redifne your root
root /var/www/html/lang/en_ca;
include /etc/nginx/nginx_default.conf;
# this directive is unique to our set up, but demonstrates
# you can do more directives per site like this
location ~ \.php$ {
root /var/www/html/lang/en_ca;
}
}
在 https://github.com/drud/ddev/issues/1850#issuecomment-547461968 中以相同的方式解决了相同的问题以获得更多上下文。