Nginx, falsche Site bereitgestellt

Nginx, falsche Site bereitgestellt

Ich habe meine Site auf der IP 1.2.3.4

Bei meinem Domain-Provider verweisen sowohl onesite.com als auch anothersite.com auf 1.2.3.4

Mit Nginx habe ich zwei Sites konfiguriert:

server {
    listen 1.2.3.4:80;
    server_name www.oneserver.com;
    rewrite ^(.*) http://onserver.com$1 permanent;
}

server {
    listen 1.2.3.4:80;
    server_name onserver.com;

    location / {
        fastcgi_pass 127.0.0.1:8878;

    [..]

Und:

server {
    listen 1.2.3.4:80;
    server_name myapp.anotherserver.com;

    location / {
        fastcgi_pass unix:/tmp/myapp.sock;

    [..]

Wenn ich auf myapp.anotherserver.com zugreife, werde ich zu oneserver.com weitergeleitet.

Irgendeine Hilfe?

Antwort1

Wie user186340erwähnt sieht Ihr Konfigurationsausschnitt gut aus und der Zugriff myapp.anotherserver.comim Port 80sollte im 3. von Ihnen angegebenen Block erfolgen. Wenn es nicht wie beschrieben funktioniert, liegt es möglicherweise daran, dass es nicht geladen ist.

  1. Stellen Sie sicher, dass die gesamte hier angezeigte Konfiguration von nginx gefunden/geladen wurde
  2. Verwenden Sie diese Option nginx -t, um Ihre Konfiguration zu validieren
  3. Überwachen Sie Ihr Fehlerprotokoll, wenn Sie eineHUPSignalzum Nginx-Masterprozess, um eventuelle Fehlermeldungen zu erkennen
  4. Wenn Sie nginx v1.9.2+ verwenden, möchten Sie möglicherweise verwendennginx -Tum die geladene Konfiguration auf die Standardausgabe zu übertragen

Wenn alles Folgende in Ordnung war, haben Sie wahrscheinlich die angezeigte Konfiguration im Vergleich zu der, die Sie tatsächlich verwenden, geändert.

Antwort2

Das Problem besteht darin, dass Nginx den Standardserver auswählt und diesen für alle Anfragen bereitstellt, ohne dass ein Server explizit definiert ist. Meine Problemumgehung besteht darin, einen Standardserver zu definieren, der nichts tut.

# This just prevents Nginx picking a random default server if it doesn't know which
# server block to send a request to
server {
    # You can add 443/ssl if you need to
    listen      80 default_server; 
    server_name _;

    access_log off; log_not_found off;

    # "I'm a teapot", effectively "go away" https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error
    # Code 403 (forbidden), 410 (gone) or 501 (not implemented) is probably a better choice https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error
    return 418; 
}

verwandte Informationen