正确配置 NGINX,将 http 和所有 vhosts 重定向到特定地址

正确配置 NGINX,将 http 和所有 vhosts 重定向到特定地址

我不熟悉如何设置配置,我觉得我的大部分配置都是正确的,但有一些特定的功能我无法正确配置。

我想要实现的目标:

  1. 所有 http(80) 流量自动重定向至 https(443)
  2. 我希望服务器块能够发挥“万能”的作用
    • 我也想成为一个“万能”任何https://site.example.com(http 和 https)对 www.example.com、example.com、bob.example.com、-randomstring-.example.com 的请求重定向到 site.example.com,以便它在地址栏中读取。

已在运行的内容:

  1. http 重定向到 https (ssl 证书配置工作正常)
  2. http://-randomstring-.example.com 将要https://site.example.com按照我想要的方式重定向。

什么是不是在职的:

  1. 请求https://-randomstring-.example.com将保留,而不是重定向到https://site.example.com

另外还有一些注意事项:

  1. 公共 DNS 通配符 *.example.com 解析为我的服务器 IP
  2. 这是主要配置:http://pastebin.com/rqzQDwyD
  3. 这是包含的配置:http://pastebin.com/D87R6LJK

有人明白我希望它如何工作吗?使用 NGINX 是否可行?

答案1

只要您的 SSL 证书是通配符证书,只需添加通过 SSL 访问的 *example.com 的服务器块就足够了。

server {
    listen                  443 ssl;

    ssl                     on;
    ssl_certificate         /etc/nginx/cert/_.example.com-chained.pem;
    ssl_certificate_key     /etc/nginx/cert/_.example.com.key.insecure;
    ssl_session_timeout     15m;
    ssl_protocols           SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers             ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;

    server_name             *.example.com;

    return 301 https://site.example.com$request_uri$is_args$args;
}

答案2

Martin 提供的答案只是部分有效。它会让浏览器陷入无限重定向循环,这很糟糕。我进行了一些搜索,下面是我需要的有效配置。下面是完整配置:http://pastebin.com/ngPUH5P2

这只是我需要的部分配置(我不想发布整个不相关的配置)

    if ($host !~* ^site\.) {  
    return 301 https://site.example.com$request_uri$is_args$args;
    }

相关内容