为通过 nginx 和 GitHub 页面静态页面路由的多个网络服务设置 SSL 证书
Setting up an SSL certificate for multiple webservices routed through nginx and a GitHub pages static page
好吧,我 运行 遇到了一个完全超出我的专业知识或领域的情况。所以这是我的问题。
我在 3 public 个 IP 地址上部署了 3 个 Web 服务(作为 docker 个容器)。它们被称为 hackalist
、core-api
和 cms
。现在,我想重定向其中三个 http://wolfbeacon.com/api/core , http://wolfbeacon.com/api/hackalist and http://wolfbeacon.com/cms(基本上是 3 个不同的端点)。
因此,出于这个目的,我假设我必须设置一个 nginx 服务器来将这些客户端请求委托给容器 IP。这是有道理的,我已经在本地完成了。
现在,我有我们的主要网站,http://wolfbeacon.com 通过 GitHub 页面托管。
问题:为它们全部设置 SSL 证书。他们所有人和未来的网络服务的一个证书。我该怎么做呢?
nginx 是 反向代理 服务器,事实上,这正是您所需要的。
但是,GitHub 页面不允许您配置它们的反向代理,它也不支持自定义域的 SSL:
HTTPS is not supported for GitHub Pages using custom domains.
引自https://help.github.com/articles/securing-your-github-pages-site-with-https/
因此,为了实现您的目标,您必须在 GitHub 页面 和 所有 Web 服务之前设置自己的服务器。我会把它命名为 balancer
.
然后您在此 balancer
上安装 nginx 并将其设置为为您的主域(在您的示例中为 wolfbeacon-dot-com)提供响应并(可选)为 SSL 提供服务。您还必须将您域的名称服务器委派给此 balancer
。
然后您可以指向 真实的 GitHub 网页 URL URL 您的 balancer
中的网站(如 example.github.io) ]s proxy_pass
指令。
假设 example.github.io 作为您网站静态内容的主要部署,example.org 作为您所有内容和服务的首页,然后您从与以下略微类似的配置开始:
server {
server_name example.org;
listen 80 default_server;
listen [::]:80 default_server;
location / {
proxy_pass https://example.github.io;
}
location /api/core {
proxy_pass http://{PUT_HERE_IP_ADDRESS_OF_YOUR_core-api_SERVICE}/
}
location /api/hackalist {
proxy_pass http://{PUT_HERE_IP_ADDRESS_OF_YOUR_hackalist_SERVICE}/
}
location /api/cms {
proxy_pass http://{PUT_HERE_IP_ADDRESS_OF_YOUR_cms_SERVICE}/
}
}
一旦您确定您的 nginx 正在为您的 .com 提供服务,请继续使用 listen 443
指令和一些额外的指令来增强此配置,以便通过 SSL 提供服务。
向 https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04 咨询有关如何配置 nginx 以从头开始通过 SSL 服务的后续指导。
好吧,我 运行 遇到了一个完全超出我的专业知识或领域的情况。所以这是我的问题。
我在 3 public 个 IP 地址上部署了 3 个 Web 服务(作为 docker 个容器)。它们被称为 hackalist
、core-api
和 cms
。现在,我想重定向其中三个 http://wolfbeacon.com/api/core , http://wolfbeacon.com/api/hackalist and http://wolfbeacon.com/cms(基本上是 3 个不同的端点)。
因此,出于这个目的,我假设我必须设置一个 nginx 服务器来将这些客户端请求委托给容器 IP。这是有道理的,我已经在本地完成了。
现在,我有我们的主要网站,http://wolfbeacon.com 通过 GitHub 页面托管。
问题:为它们全部设置 SSL 证书。他们所有人和未来的网络服务的一个证书。我该怎么做呢?
nginx 是 反向代理 服务器,事实上,这正是您所需要的。
但是,GitHub 页面不允许您配置它们的反向代理,它也不支持自定义域的 SSL:
HTTPS is not supported for GitHub Pages using custom domains.
引自https://help.github.com/articles/securing-your-github-pages-site-with-https/
因此,为了实现您的目标,您必须在 GitHub 页面 和 所有 Web 服务之前设置自己的服务器。我会把它命名为 balancer
.
然后您在此 balancer
上安装 nginx 并将其设置为为您的主域(在您的示例中为 wolfbeacon-dot-com)提供响应并(可选)为 SSL 提供服务。您还必须将您域的名称服务器委派给此 balancer
。
然后您可以指向 真实的 GitHub 网页 URL URL 您的 balancer
中的网站(如 example.github.io) ]s proxy_pass
指令。
假设 example.github.io 作为您网站静态内容的主要部署,example.org 作为您所有内容和服务的首页,然后您从与以下略微类似的配置开始:
server {
server_name example.org;
listen 80 default_server;
listen [::]:80 default_server;
location / {
proxy_pass https://example.github.io;
}
location /api/core {
proxy_pass http://{PUT_HERE_IP_ADDRESS_OF_YOUR_core-api_SERVICE}/
}
location /api/hackalist {
proxy_pass http://{PUT_HERE_IP_ADDRESS_OF_YOUR_hackalist_SERVICE}/
}
location /api/cms {
proxy_pass http://{PUT_HERE_IP_ADDRESS_OF_YOUR_cms_SERVICE}/
}
}
一旦您确定您的 nginx 正在为您的 .com 提供服务,请继续使用 listen 443
指令和一些额外的指令来增强此配置,以便通过 SSL 提供服务。
向 https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04 咨询有关如何配置 nginx 以从头开始通过 SSL 服务的后续指导。