Redirect Nginx HTTPS 301重定向到另一个TLD(托管在同一服务器上),而不显示SSL警告
我拥有这些域名Redirect Nginx HTTPS 301重定向到另一个TLD(托管在同一服务器上),而不显示SSL警告,redirect,ssl,nginx,https,tld,Redirect,Ssl,Nginx,Https,Tld,我拥有这些域名 example.com, .com.au, .net, .net.au, ... (8 in total). 我希望所有这些TLD 301重定向到secure.com域 我使用Nginx处理所有HTTP请求,但不是所有HTTPS 我已为https://www.example.com这适用于www和非www,没有任何安全警告(如预期) 浏览时说http://example.net我被重定向到https://www.example.com没有安全警告。但是,当浏览
example.com, .com.au, .net, .net.au, ... (8 in total).
我希望所有这些TLD 301重定向到secure.com域
我使用Nginx处理所有HTTP请求,但不是所有HTTPS
我已为https://www.example.com
这适用于www和非www,没有任何安全警告(如预期)
浏览时说http://example.net
我被重定向到https://www.example.com
没有安全警告。但是,当浏览到https://example.net
我收到了可怕的安全警告
现在我假设这是因为我只拥有.com SSL证书,而不是其他TLD。此外,所有站点都托管在相同的服务器/ip地址上,因此将为其他TLD返回.com证书
所有域的DNS A记录都指向我的Nginx服务器的单个IP地址
根据我的阅读和理解,我认为我需要一个IP地址和SSL证书,用于我拥有的每个TLD。对于一个简单的重定向来说,这似乎有些过分了
是否有任何Nginx或DNS欺骗手段可用于避免其他(非.com TLD)的标准安全警告
而不必掏钱购买更多的IP地址和SSL证书
我想我最好先问一下智囊团,然后再购买所有必需的证书等
下面是我的Nginx配置:
server { # redirect/catch all block
listen 80;
listen 443;
server_name _ .example.com .example.com.au .example.net .example.net.au;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl default_server; # Secure default server block
server_name www.example.com;
root /srv/www/example.com/public_html;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# ... rest of config
}
根据我的阅读和理解,我认为我需要一个IP地址和SSL证书,用于我拥有的每个TLD。对于一个简单的重定向来说,这似乎有些过分了
重定向是在HTTP层完成的。但在HTTPS中,HTTP层封装在TLS中。这意味着它必须首先成功建立TLS连接,然后才能执行重定向。因此,对于您通过HTTPS访问的所有主机名,它都需要一个正确的证书,即使您只是重定向到另一个主机。通过将第一个重定向服务器设置为默认值,我成功地完成了类似的任务。然后,第二个更具体的服务器处理所有流量。注意对
default\u server
和server\u name
的更改。我的证书没有分配给IP地址,只分配给域名,重定向在Chrome中发生时没有错误,但在Safari中,它会在访问https://
的测试中弹出警告
谢谢你的确认!协议(和Nginx)是否允许在同一服务器(和IP地址)上使用多个https域(假设我拥有每个域的CA证书)?或者每个安全域都需要一个单独的IP地址?i、 共享主机提供商如何处理这个问题?我的问题是:在建立TLS连接时,主机名是否也被封装,或者nginx是否有权访问它?如果主机名也被封装,那么我猜它依赖于IP地址(来自DNS记录),并且我需要为每个域提供单独的IP。通过服务器名称指示(SNI),您可以在同一IP后面拥有多个证书。nginx支持这一点,也支持所有现代浏览器,但像IE8这样的旧浏览器不支持它。另一种方法是获得一个包含所有必要名称的单一证书。后续:我最终选择了单一证书路径。我以不到200美元的价格从16个SAN(8个www和8个不带www)购买了一个Comodo PositiveSSL多域证书。没有额外的IP地址购买,现在我只有一个证书管理一个IP地址。谢谢你!
server { # redirect/catch all block
listen 80;
listen 443;
server_name _ .example.com .example.com.au .example.net .example.net.au;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl default_server; # Secure default server block
server_name www.example.com;
root /srv/www/example.com/public_html;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# ... rest of config
}
server {
# default for all, except other more-specific blocks
listen 80 default_server;
listen 443 ssl default_server;
server_name _;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
return 301 https://www.example.com$request_uri;
}
server {
listen 443 ssl;
server_name www.example.com;
root /srv/www/example.com/public_html;
index index.html index.htm;
ssl on;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
# ... rest of config
}