我不熟悉如何设置配置,我觉得我的大部分配置都是正确的,但有一些特定的功能我无法正确配置。
我想要实现的目标:
- 所有 http(80) 流量自动重定向至 https(443)
- 我希望服务器块能够发挥“万能”的作用
- 我也想成为一个“万能”任何
https://site.example.com
(http 和 https)对 www.example.com、example.com、bob.example.com、-randomstring-.example.com 的请求重定向到 site.example.com,以便它在地址栏中读取。
- 我也想成为一个“万能”任何
。
已在运行的内容:
- http 重定向到 https (ssl 证书配置工作正常)
http://-randomstring-.example.com
将要https://site.example.com
按照我想要的方式重定向。
什么是不是在职的:
- 请求
https://-randomstring-.example.com
将保留,而不是重定向到https://site.example.com
另外还有一些注意事项:
- 公共 DNS 通配符 *.example.com 解析为我的服务器 IP
- 这是主要配置:http://pastebin.com/rqzQDwyD
- 这是包含的配置: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;
}