Nginx会将http重定向到子域名的https,但会显示顶级域名

时间:2017-04-05 18:37:24

标签: ssl redirect nginx

我正在尝试将nginx配置为如下: 顶级域名,例如example.com,由HTTP访问,重定向到HTTPS。其所有子域名也必须重定向到HTTPS(显然,子域名必须重定向到自身,但HTTPS)。

这是配置(文件default):

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

        server_name example.com *.example.com;

        return 301 https://$host$request_uri;
}

server {
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        include snippets/ssl-example.com.conf;
        include snippets/ssl-params.conf;

        server_name example.com www.example.com;

        root /home/user/wwwroot;

        index index.html index.htm index.nginx-debian.html;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
}

以下是'yt'子域(文件yt

的配置
server {
   listen 443 ssl;
   server_name yt.example.com;

   location ^~ /.well-known {
      allow all;
      root /home/user/wwwroot;
   }

   location / {
       proxy_set_header        X-Real-IP       $remote_addr;
       proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Host $http_host;
       proxy_set_header X-Forwarded-Proto $scheme;


       proxy_pass http://localhost:8080;
   }

}

正如所见,yt.example.com只是将请求传递给应用程序(在本例中为Youtrack)。

example.com和www.example.com的重定向工作正常,但对于yt.example.com,它表现得很奇怪。当我访问http://yt.example.com时,nginx会重定向到https://yt.example.com,但会提供root /home/user/wwwroot文件中指定的内容default。当我点击刷新按钮时,我的浏览器在https://yt.example.com重新加载页面,然后nginx按照我的预期将请求传递给应用程序。因此,当它将HTTP重定向到HTTPS时,它不会传递请求,但是当请求已经使用HTTPS时,它会成功重定向。

我不是nginx-guru,所以我需要一些帮助。

0 个答案:

没有答案