网上的反代基本都是 http 流量,因为有一些别的用途,所以我特意分了一个二级域名专门用来反代一级域名里面的各种东西。。。(仅仅想 https 反代的直接跳到后面看 nginx 的配置就行了!)
好吧,确实比较作,能踩的坑都踩完了,这里权当技术学习记录一下~
首先,我期望的结果是,有一个二级域名 *.backup.xxx.com
专门分配一台 VPS 用来反代我的一级域名 *.xxx.com
里面的东西!首先,在 DNS 设置中,需要把这个二级域名指向不同的 IP:
接着,重新获取一张证书(这里仍然用 certbot docker 方式,怎么使用就不在赘述了,可以看这里):
注意,这里获取的证书域名是
backup.xxx.com
,而不是 xxx.com
的哦~docker run -it --rm --name certbot \
-v ./certbot/etc:/etc/letsencrypt \
-v ./certbot/lib:/var/lib/letsencrypt \
-v ./certbot/secrets:/.secrets \
certbot/dns-cloudflare:latest certonly \
--dns-cloudflare-credentials /.secrets/cloudflare.ini \
--dns-cloudflare-propagation-seconds 60 \
--server https://acme-v02.api.letsencrypt.org/directory \
--no-eff-email --email yourmail@mail.com --agree-tos \ # 改成你的邮箱地址
-d backup.xxx.com \ # 改成你的二级域名
-d *.backup.xxx.com # 改成你的二级域名
运行后,选 1 使用 DNS 认证方式,然后静候 60s 就获取到证书了。
最后,配置下 nginx,可以参考下面的改:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location / { return 301 https://$host$request_uri; }
}
# 用二级域名 test.backup.xxx.com 反代 test.xxx.com
server {
listen 443;
server_name test.backup.xxx.com;
ssl on;
ssl_certificate /etc/nginx/test.backup.xxx.com.crt; # 改成上面申请的证书地址
ssl_certificate_key /etc/nginx/test.backup.xxx.com.key; # 改成上面申请的证书地址
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://test.xxx.com/;
proxy_ssl_certificate /etc/nginx/xxx.com.crt; # xxx.com 的证书地址
proxy_ssl_certificate_key /etc/nginx/xxx.com.key; # xxx.com 的证书地址
}
}
server 下面填写的是你申请的二级域名证书,反代下面填写的是你一级域名的证书,不要搞错!
全部都弄好后重载下 nginx 吧,你会发现,二级域名可以反代一级域名了😜!
Comments NOTHING