所以我在 Porkbun 上有一个域名,它给了我一个 ssl 证书。但现在我想在网站上放置一个 ssl 证书。服务器托管在一台迷你电脑上,网站位于本地主机上,然后打开 webui,我已转发到路由器上的端口 80,并且我已经完成了 dns 和所有操作。网站正在我的域上运行,它不仅仅是 https,只是 http。 我对 Docker 不太熟悉,所以我不知道如何做编辑图像或容器之类的事情,但我会学习。
我尝试过不同的 DNS 记录,我尝试使用我在互联网上找到的脚本来获取容器内的证书。就这些了,找不到其他的了。
您可能想研究一下 http 代理。
您可以运行 docker 容器并将其映射到端口,比如说 5000,如下所示:
Dockerfile:
来自 ubuntu:最新 运行 apt-get update && apt-get install -y curl 曝光 80 CMD [“curl”,“-s”,“http://example.com”]
然后运行容器,假设您正在使用 docker compose,如下所示:
# docker-compose.yml
version: '3'
services:
example:
build: .
ports:
- "5000:80"
然后你安装一个网络服务器(我向你展示了如何在 apache 上做到这一点,但许多其他服务器也可以工作 - 我认为最常见的是 nginx)。
首先安装 apache(这是 ubuntu/debian 的示例):
sudo apt update
sudo apt install apache2
sudo ufw allow 'Apache Full'
sudo a2enmod proxy
sudo a2enmod proxy_http
您想要编辑默认页面:
sudo vi /etc/apache2/sites-available/000-default.conf
或
sudo nano /etc/apache2/sites-available/000-default.conf
将默认条目替换为:
<VirtualHost *:80>
ServerName your-domain.com
</VirtualHost>
sudo apt install certbot python3-certbot-apache
a2ensite 000-default.conf
certbot
按照说明进行操作(我喜欢自动从端口 80 重定向到 443)。
它将创建一个名为 000-default-le-ssl.conf 的文件 - 应该如下所示:
<VirtualHost *:443>
ServerName your-domain.com
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/your-domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem
</VirtualHost>
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/
sudo systemctl restart apache2
-- 或者,如果您需要很多,您可能想看看 nginx 代理管理器。
顺便说一句。创建一个用于更新的 cron 作业也是一个很好的做法
打开 root 用户的 crontab 并添加一行:
sudo crontab -e
并添加
0 2 * * * /usr/bin/certbot renew --quiet
希望有帮助