我正在尝试设置一个双服务器系统,其中一个用于网络托管,另一个用于为网络托管服务器提供内容(CDN)。
我目前拥有两台服务器,它们都具有 Let's Encrypt SSL。
example.com 123.123.123.123
内容分发网络 (CDN)https://foo.com
foo.com 111.111.111.111
我已经为我的网络主机服务器设置了一个子域名:
cdn.example.com
,它指向 CDN 服务器foo.com 111.111.111.111
。
问题是没有cdn.example.com
Let's Encrypt SSL。
我如何获取cdn.example.com
指向 的Let's Encrypt SSL foo.com 111.111.111.111
?
当我跑步时:
certbot --apache --cert-name example.com -d cdn.example.com
它给出了一个错误:
Failed authorization procedure. cdn.example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://cdn.example.com/.well-known/acme-challenge/PaKenmvAqHoOdOBUhThxxxxx: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: cdn.example.com Type: unauthorized Detail: Invalid response from http://cdn.example.com/.well-known/acme-challenge/PaKenmvAqHoOdOBUhThxxxxx: "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML
2.0//EN\">\n<html><head>\n<title>404 Not Found</title>\n</head><body>\n<h1>Not Found</h1>\n<p"
To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address.
运行默认的 Debian 和 Apache2 安装。
我想我必须手动设置 CDN 服务器中的 acme-challenge 文件?我应该运行哪些命令?
答案1
简短的回答是“你不需要”。你的辅助主机 (foo.com) 上不需要 SSL。
您需要做的就是:
- 为 cdn.example.com 生成 SSL
- 设置反向 http 代理在您的 cdn.example.com 上。这样,所有 HTTPS 请求都将从 cdn.example.com 获得有效的 SSL,但内容将使用http://foo.com
下面是我使用 NGINX 执行此操作的示例:
server {
listen 443 ssl;
server_name cdn.example.com;
ssl on;
#BEGIN OPTIONAL--in case you want to have more stats on foo.com
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header ClientIP $remote_addr;
#END OPTIONAL--
ssl_certificate /etc/ssl/cdn.example.com.pem;
ssl_certificate_key /etc/ssl/cdn.example.com.key;
location / {
proxy_pass http://foo.com:80/;
}
}
答案2
为了实现你想要的:你可以复制CDN域的SSL配置(https://foo.com) 并针对域进行编辑;只需将cdn.example.com
的痕迹替换为。foo.com
cdn.example.com
由于我不知道您的服务器配置,因此我无法提供有关该过程的更多详细信息。
但是,作为一个建议(因为我不知道您的确切要求),我认为您实际上并不需要为您的 CDN 设置单独的域。在另一台服务器上,您只需为 创建一个配置即可cdn.example.com
。