如何解决如何使用 docker-nginx-certbot 创建包括 www 的域的 SSL 证书?
我正在使用 nginx 通过使用 this 容器的 docker compose 为网站提供服务。
如果我按照说明操作,容器只会在 nginx .conf 中生成我命名的 SSL 证书
class Words(models.Model):
# …
@classmethod
def sum_freq(cls):
freqs = []
words = cls.objects.exclude(tag='Pu')
for word in words:
freqs.append(word.freq)
summation = sum(freqs)
return summation
@classmethod
def percent_n(cls):
words = cls.objects.exclude(tag='Pu')
percent_list = []
for word in words:
percent_n = (word.freq / word.sum_freq) * 100
percent_n = round(percent_n,2)
percent_list.append(percent_n)
return percent_list
但不适用于from django.db.models import F,Sum
from django.db.models.functions import Round
class Words(models.Model):
# …
@classmethod
def sum_freq(cls):
return cls.objects.exclude(tag='Pu').aggregate(
summation=Sum('freq')
)['summation'] or 0
@classmethod
def percent_n(cls):
summation = cls.sum_freq()
return list(
cls.objects.exclude(tag='Pu').values_list(
Round(10000*F('freq')/summation)/100,flat=True
)
)
。如何让容器自动为 ssl_certificate /etc/letsencrypt/live/www.devenv.ai/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.devenv.ai/privkey.pem;
和 devenv.ai
创建证书?
解决方法
您需要阅读说明how letsencrypt
generates the certificate。
一种方法是获取 devenv.ai
的通配符证书,但这是系统管理员的问题,超出了 stackowerflow 的范围,因此您可以研究超级用户、服务器故障或询问 Ubunty。
如果您将它们视为两个单独的域,那么要获得单独的证书(每个域一个),您需要让您的代理侦听您所使用的两个域上的 HTTPS
端口 (443)。将尝试获得认证。
这意味着,您需要:
- 将两个名称的 DNS 设置为指向相同的 IP 地址。使用
www.devenv.ai
的别名指向devenv.ai
将是一个好方法。 - 在
nginx
容器中为每个域分别创建 2 个服务器配置。对于您指定的容器,最简单的方法是在conf.d
中有 2 个单独的配置文件。这样,您将有 2 个域在 nginx 上运行,您可以决定要么保留它们,要么将其中一个重定向到另一个。
只需添加配置文件即可将其扩展到多个域。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。