Nginx funktioniert nur für www.myserver.org

Nginx funktioniert nur für www.myserver.org

Entsprechend derNginx-Dokumentationsollte der folgende Serverblock für beide funktionierenhttps://joycegroup.orgUndhttps://www.joycegroup.org

server {

listen 443 ssl;

ssl_certificate /etc/ssl/certs/joycegroup_org_chain.crt;

ssl_certificate_key /etc/ssl/private/joycegroup_org.key;

root /var/www/joycegroup_org/;

server_name joycegroup.org www.joycegroup.org;

location / {
index index.html index.htm index.html index.php;
}

}

Es funktioniert fürhttps://www.joycegroup.org, nichthttps://joycegroup.org. Was mache ich falsch?

Irgendwann möchte ich auch http auf https umleiten, aber ich versuche zuerst, dieses Problem zu lösen.

Es tut mir so leid, dass diese Frage so einfältig ist. Ich renne schon seit Stunden mit dem Kopf gegen die Wand.

Antwort1

www.joycegroup.orgbedeutet allein nicht, dass joycegroup.org (ohne www) ein gültiger DNS-Eintrag ist.

Beachten Sie, dass Sie keinen CNAME-Eintrag für die Stammdomäne einer Domäne einrichten können (Warum kann ein CNAME-Eintrag nicht an der Spitze (auch bekannt als Stamm) einer Domäne verwendet werden?), Sie benötigen also einen A-Eintrag.

Sie können auf verschiedene Weise anzeigen, dass es sich um ein Problem mit der DNS-Auflösung handelt, z. B. durch curl https://joycegroup.org. Wenn angezeigt wird curl: (6) Could not resolve host: joycegroup.com; Name or service not known, handelt es sich um ein DNS-Problem.

Sie können außerdem bestätigen, dass es sich um ein DNS-Problem handelt, das mit dem Unterschied zwischen den beiden Datensätzen zusammenhängt, indem Sie in beiden Fällen nslookup oder host oder dig ausführen und die Ausgabe vergleichen.

Einige Beispiele:

  • host(Linux):
$ host <record with www>

<record with www> has address 192.168.1.10

$ host <record without www>

<no output is shown>

  • nslookup(Linux):
$ nslookup <record without www>
Server:         <dns server ip>
Address:        <dns server ip>#53

*** Can't find <record without www>: No answer

$ nslookup <record with www>

Server:         <dns server ip>
Address:        <dns server ip>#53

Name:   <record with www>
Address: 192.168.1.10
  • nslookup(Windows):
C:\Users\myuser> nslookup <record without www>

Server:  <dns server>
Address:  <dns server ip>

Name:    <record without www>

Beachten Sie, dass keine IP-Adresse angezeigt wird. Es wird etwas zurückgegeben, da jede Zone einen eigenen Eintrag hat, obwohl es sich nicht um einen A-Eintrag (einer IP-Adresse zugeordnet), sondern um einen SOA-Eintrag handelt.

Fragt man hingegen einen tatsächlich existierenden A-Record ab, erhält man die klassische Antwort:

C:\Users\myuser>nslookup <record with www>

Server:  <dns server>
Address:  <dns server ip>

Name:    <record with www>
Address:  192.168.1.10

Antwort2

Wie von beantwortet A. Darwin, ist für Sie kein DNS-Eintrag festgelegt für joycegroup.org:

c-nan@mba-c-nan ~ % dig www.joycegroup.org A +short  
50.116.60.151
c-nan@mba-c-nan ~ % dig joycegroup.org A +short    
c-nan@mba-c-nan ~ % 

Sie sollten den folgenden DNS-A-Eintrag hinzufügen

joycegroup.org  IN  A   50.116.60.151

bei Ihrem DNS-Anbieter:

c-nan@mba-c-nan ~ % dig joycegroup.org NS +short
dns1.registrar-servers.com.
dns2.registrar-servers.com.
c-nan@mba-c-nan ~ % 

Wenn Sie den gesamten HTTP-Verkehr auf HTTPS umleiten möchten, können Sie Folgendes konfigurieren:

server {
    listen 80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}

Um spezifisch für eine Domäne zu sein, könnten Sie Folgendes verwenden:

server {
    listen 80;
    server_name www.joycegroup.com joycegroup.com;
    return 301 https://joycegroup.com$request_uri;
}

verwandte Informationen