
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 user186340
erwähnt sieht Ihr Konfigurationsausschnitt gut aus und der Zugriff myapp.anotherserver.com
im Port 80
sollte im 3. von Ihnen angegebenen Block erfolgen. Wenn es nicht wie beschrieben funktioniert, liegt es möglicherweise daran, dass es nicht geladen ist.
- Stellen Sie sicher, dass die gesamte hier angezeigte Konfiguration von nginx gefunden/geladen wurde
- Verwenden Sie diese Option
nginx -t
, um Ihre Konfiguration zu validieren - Überwachen Sie Ihr Fehlerprotokoll, wenn Sie eine
HUP
Signalzum Nginx-Masterprozess, um eventuelle Fehlermeldungen zu erkennen - Wenn Sie nginx v1.9.2+ verwenden, möchten Sie möglicherweise verwenden
nginx -T
um 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;
}