nginx:排除子域名进行 SSL 加密

nginx:排除子域名进行 SSL 加密

如果主站点 URL 使用 SSL,您可以排除所有其他子域的加密吗?

server {
    listen 80;
    listen [::]:80;

    server_name .example.com;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    ## ssl stuff

    server_name www.example.com;
    return 301 https://example.com$request_uri;
}
server {
    listen 443 ssl default_server http2;
    listen [::]:443 ssl http2;
    server_name example.com;
    root /home/forge/example.com/public;
    index index.html index.htm index.php;
    charset utf-8;   
}

答案1

定义一个更具体的服务器,它将代替您现有的服务器。

server {
  listen 80;
  server_name subdomain1.example.com; # add others if you like
  root /home/forge/example.com/public/subdomain; # check this
  index index.html index.htm index.php;
}

正如 ceejay 在评论中指出的那样,您所包含的配置中没有包含重定向,因此发生了其他事情。


总结一下,更具体的 `server_name` 会得到服务,因此不会进行 `301` 重定向。摘自 [此处][1]。
  1. 确切名称
  2. 以星号开头的最长通配符名称,例如“*.example.org”
  3. 以星号结尾的最长通配符名称,例如“mail.*”
  4. 第一个匹配的正则表达式(按配置文件中出现的顺序)

相关内容