将除一个子域以外的所有子域都重定向到 https?

Redirect all but one sub domain to https?

post 非常接近我要找的东西。但我要找的是

letsencrypt.example.com   should always be http
          *.example.com   should always be https

使用 this post 中的解决方案,我可以通过

将所有 http 重写为 https
server {
  listen 80;
  server_name test.example.com;
  rewrite     ^   https://$http_host$request_uri? permanent;
}

然后继续

server {
  listen 443 ssl;
  ...

问题

但是如何确保 letsencrypt.example.com 保留在 http 端口 80?

您应该为 letsencrypt.example.com 使用显式服务器,然后为重定向使用全能服务器。

您的 80 端口服务器块将如下所示:

server {
    listen 80;
    server_name letsencrypt.example.com;
    ...
}
server {
    listen 80 default_server;
    return 301 https://$http_host$request_uri;
}

详情见this documentation