2016-07-23 2 views
0

Es gibt eine Menge von Subdomains auf unserer Plattform die folgende Art und Weise gehostet:Wie Benutzer mit www auf die bare-Domain mit Nginx umleiten?

server { 
    listen   443 ssl; 
    server_name  *.company.com; 
//... 
} 

Leider dies entspricht Anfragen mit www.something.company.com aber der SSL-Schlüssel dies nicht unterstützt, und ich mag Anfragen umleiten beginnend mit www. zum Rest der Anfrage zB: something.company.com.

Was ist der beste Weg, das zu tun?

Ich habe versucht, die folgenden verwenden, die nicht funktioniert hat:

server_name  *.company.com; 
    if ($host ~* ^www\.(.*\.company\.com)$) { 
    return 301 $scheme://$1; 
    } 
+1

Es ist relativ einfach, 'nginx' so zu konfigurieren, dass das Präfix' www.' aus einer URL verloren geht (http://stackoverflow.com/questions/7947030/nginx-no-www-to-www-and-). www-to-no-www), aber wenn Ihr SSL-Zertifikat nicht für die www-Domäne gültig ist, werden die Clients überhaupt keine Verbindung herstellen. Es ist wirklich nur nützlich, wenn Sie ein Wildcard-Zertifikat haben (in diesem Fall würden Sie diese Frage wahrscheinlich nicht stellen) –

Antwort

0

Sie können nicht tun, mit einer Umleitung: die ssl/tls Verbindung ist, bevor die HTTP-Anforderung und 301-Weiterleitung Antwort. Sie haben jedoch nur ein * .company.com-Zertifikat, das nur für eine Stufe (a.compaby.com), nicht für zwei oder mehr (a.b.company.com oder www.a.company.com) gültig ist.

Die einzige Lösung besteht darin, alle Domänen in Ihrem Zertifikat explizit aufzulisten.

Verwandte Themen