Ubuntu Nginx将http子域重定向到https

Ubuntu Nginx将http子域重定向到https,ubuntu,redirect,ssl,nginx,rewrite,Ubuntu,Redirect,Ssl,Nginx,Rewrite,我有一个包含3个子域的域: - example.com (main domain) - api.example.com - blog.example.com - support.example.com (just a cname to point to zendesk) 博客 站点/主域 我的问题是: 子域api.example就可以了 主域名和是确定的 如果我试图通过HTTP上的www访问主域,浏览器将重定向到正确的地址。但当我尝试使用www和https访问主域时,浏览器会尝试从api

我有一个包含3个子域的域:

- example.com (main domain) - api.example.com - blog.example.com - support.example.com (just a cname to point to zendesk) 博客

站点/主域

我的问题是:

  • 子域api.example就可以了
  • 主域名和是确定的
  • 如果我试图通过HTTP上的www访问主域,浏览器将重定向到正确的地址。但当我尝试使用www和https访问主域时,浏览器会尝试从api访问SSL证书
  • 在我尝试访问主域并重定向到HTTPS之后,我的其他没有HTTPS的子域被重定向到HTTPS并显示错误,因为它们试图使用api中的SSL证书
  • 示例:如果我尝试访问,firefox将重定向到并显示SSL错误
  • 这是一段视频
  • 域已联机,您可以在上进行测试

您的web服务器设置为
严格的传输安全最大年龄=16070400;包括子域

这将告诉web浏览器仅使用https请求您的域。如果您希望通过不安全的http访问子域
博客
,则需要从http严格传输安全(HSTS)中删除
包含子域
,并使用其他浏览器(或清除Firefox)


您的web服务器设置为
严格的传输安全最大年龄=16070400;包括子域

这将告诉web浏览器仅使用https请求您的域。如果您希望通过不安全的http访问子域
博客
,则需要从http严格传输安全(HSTS)中删除
包含子域
,并使用其他浏览器(或清除Firefox)


您收到SSL错误消息,因为您没有
blog.alooga.com.br
域的SSL证书

SSL错误消息供您参考:


您收到SSL错误消息,因为您没有
blog.alooga.com.br
域的SSL证书

SSL错误消息供您参考:


拥有通配符SSL证书并在所有地方使用HTTPS是一种常见模式。拥有通配符SSL证书并在所有地方使用HTTPS是一种常见模式,尽管我会按照@mikhailov的建议去做。尽管我会按照@mikhailov的建议去做。
# HTTP server
server {
    listen       80;
    server_name  api.example.com;
    return 301 https://api.example.com$request_uri;
}


# HTTPS server
server {
    ssl          on;
    listen       443;
    server_name  api.example.com;

    ssl_certificate APIcert.crt;
    ssl_certificate_key APIcert.key;

    #root configuration.....
}
server {
    listen 80;
    server_name blog.example.com;

    root /var/www/blog;
    index index.php index.html index.htm;
server {
    listen 80;
    listen 443 ssl;
    server_name www.example.com;
    return 301 https://example.com$request_uri;

    location ~ \.(php|html)$ {
        deny  all;
    }
}

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

    location ~ \.(php|html)$ {
        deny  all;
    }
}

server {
    ssl on;
    listen 443 ssl;
    ssl_certificate  mycert.crt;
    ssl_certificate_key  mycert.key;
    server_name example.com;

    root /var/www/frontend;
    .....
}