Nginx,作为网站的反向代理,提供 HTTP 和 HTTPS 服务,无需区分子域名

Nginx,作为网站的反向代理,提供 HTTP 和 HTTPS 服务,无需区分子域名

场景如下。

example.com 服务器,提供 80 或端口服务取决于用户的选择。

该服务器将被移至 Nginx 实例后面,该实例将充当反向代理(和负载平衡器),并相应地提供 HTTP 和 HTTPS 服务。

笔记:

  1. 在 Nginx 中设置证书应该不是问题。
  2. 只有当前支持 HTTPS 服务时,Nginx 才会使用 HTTPS 与后端服务器进行通信。
  3. Nginx支持多个虚拟主机,(即多个域名)。

重点是,到目前为止我遇到的所有示例都是针对 http 和 https 在不同的子域中提供服务的情况,例如

server_name www.example.com;

server_name secure.example.com;

问题是,这种情况的配置是什么样的?

答案1

由于您的 SSL 端不会在同一个虚拟主机配置中,因此您需要在两个单独的服务器 {} 配置指令中进行此操作。

你应该能够做类似的事情

server {
        listen       80 default;
        server_name  example.com _;
        ....
}
server {
        listen       443 default;
        server_name  example.com _;
        ....
}

由于您有两个单独的监听端口,您将能够拥有同一虚拟主机名的多个实例 - 每个端口一个(80 为 http,443 为 https)

您可能需要考虑在两个 server{} 指令之间使用包含来包含通用配置,这样就不必在文件中重复配置

例如

server {
        listen       80 default;
        include /etc/nginx/conf/common.conf;    }
server {
        listen       443 default;
        include /etc/nginx/conf/common.conf;
}

相关内容