Nginx leitet die Domäne mit einer 301 auf Port 8000 um

Nginx leitet die Domäne mit einer 301 auf Port 8000 um

Ich habe überall gesucht, um herauszufinden, warum mein Nginx-Server eine 301-Umleitung auf einer Domain verursacht und auf der anderen nicht. Ich habe auf diesem Server zwei Sites im Apache-Stil konfiguriert (sites-available). Nehmen wir an, domain1.com und domain2.com. Ich verwende auch PHP-FPM. Hier sind die Konfigurationen

Domain1.com

server {
        listen   80; ## listen for ipv4; this line is default and implied
        server_name domain1.com www.domain1.com; 

        root /var/www/domain1.com;
        index index.php index.html index.htm;


        location / { 
                try_files $uri $uri/ /index.php?$args;
        }   

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #   
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }   

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #   
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        }   

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one 
        #   
        location ~ /\.ht {
                deny all;
        }   
}

Domain2.com

server {
        listen   80; ## listen for ipv4; this line is default and implied
        server_name domain2.com www.domain2.com; 

        root /home/mike/www;
        index index.php index.html index.htm;


        location / { 
                try_files $uri $uri/ /index.php?$args;
        }   

        #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #   
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
                root /usr/share/nginx/www;
        }   

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #   
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        }   

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one 
        #   
        location ~ /\.ht {
                deny all;
        }   
}

Sie werden feststellen, dass diese im Grunde genau gleich sind, abgesehen vom Servernamen und der Root. Ansonsten sind sie identisch. So sieht die Situation aus: domain1.com funktioniert einwandfrei, keine Probleme. Die Site für domain2 wurde EINMAL getestet, indem „listen 8000“ verwendet wurde, als der DNS für domain2.com nicht auf den Server geändert wurde. Als es als IP:8000 getestet wurde, funktionierte es einwandfrei, also habe ich es auf die Domäne geändert, den Port auf 80 geändert und den DNS ändern lassen. Der Server wurde seitdem komplett aus- und wieder eingeschaltet und nginx und php5-fpm wurden wahrscheinlich 100 Mal neu gestartet.

Wenn ich domain2.com im Browser besuche, erfolgt eine automatische Weiterleitung zu domain2.com:8000. Wenn ich web-sniffer.net verwende und mir den HTTP-Header anschaue, wird eine 301-Weiterleitung zurückgegeben. Ich habe nie eine Weiterleitung eingerichtet und es sind nirgendwo auf diesem Server 301-Weiterleitungen eingerichtet. Was mich wirklich nervt, ist, dass ich, wenn ich www.domain2.com besuche und es aus der nginx-Konfigurationsdatei unter Servername entfernt habe, die Standard-nginx-Seite sehe, was bedeutet, dass es einwandfrei funktioniert. Sobald ich www.domain2.com zur Servername-Direktive in der Konfiguration hinzufüge, wird die 301-Weiterleitung erneut gestartet.

Ich habe port_in_redirect off auch im http-Abschnitt meiner nginx.conf hinzugefügt, was aber anscheinend nichts bewirkt hat.

Hat irgendjemand eine Ahnung, was hier passiert?

Bearbeiten: curl-vhttp://domain2.com

* About to connect() to domain2.com port 80 (#0)
*   Trying 162.243.XXX.XXX... connected
> GET / HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: domain2.com
> Accept: */*
> 
< HTTP/1.1 301 Moved Permanently
< Server: nginx/1.1.19
< Date: Mon, 13 Jan 2014 17:37:07 GMT
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Powered-By: PHP/5.3.10-1ubuntu3.9
< X-Pingback: http://162.243.XXX.XXX:8000/xmlrpc.php
< Location: http://domain2.com:8000/
< 
* Connection #0 to host domain2.com left intact
* Closing connection #0

Antwort1

Es ist ein wenig schwierig, das zu erraten, ohne die tatsächliche Ausgabe vom Server zu sehen. Ich würde vorschlagen, curl -v http://example2.com/zu sehen, was tatsächlich zurückgegeben wird, aber ich vermute, Ihr Browser hat die Umleitung zwischengespeichert. Das habe ich schon einmal gesehen.

Wird bei Verwendung eines anderen Browsers die gleiche Weiterleitung angezeigt?

Aktualisieren: Laut Ihrer Diagnoseausgabe scheint dies eindeutig durch Wordpress verursacht worden zu sein und nicht durch nginx.

verwandte Informationen