Nginx ohne Servername und mit nur statischen IP-Adresse?

34

Dies ist meine erste Web-App-Bereitstellung, bei der alle möglichen Probleme auftreten.

Ich werde momentan eine Nginx + Gunicorn-Implementierung für die Django-App durchführen, aber diese Frage bezieht sich hauptsächlich auf Nginx-Konfigurationen. In einigen Fällen erhielt nginx Verbindungen und einen Proxy zum lokalen Server von gunicorn.

In den Nginx-Konfigurationen, wo steht, server_namemuss ich eine angeben? Ich habe nicht vor, Domain-Namen jeglicher Art zu verwenden, nur über die externe IP-Adresse meines Netzwerks (statisch) und die Port-Nummer, die abgehört werden soll.

Mein Wunsch ist es, dass ich, wenn ich auf so etwas zugreife http://xxx.xxx.xxx.xxx:9050, die Site bekommen kann.

Das Folgende ist der Beispielcode, auf den ich die Konfigurationen als Referenz stützen werde.

   server {
        listen   80;
        server_name WHAT TO PUT HERE?;

    root /path/to/test/hello;

    location /media/ {
        # if asset versioning is used
        if ($query_string) {
            expires max;
        }
    }
    location /admin/media/ {
        # this changes depending on your python version
        root /path/to/test/lib/python2.6/site-packages/django/contrib;
    }
    location / {
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_connect_timeout 10;
        proxy_read_timeout 10;
        proxy_pass http://localhost:8000/;
    }
        # what to serve if upstream is not available or crashes
        error_page 500 502 503 504 /media/50x.html;
     }
bash-
quelle

Antworten:

31

server_nameStandardmäßig wird eine leere Zeichenfolge verwendet, was in Ordnung ist. Sie können es vollständig ausschließen.

Ein weiterer gängiger Ansatz für die Anforderung "Ich möchte diesem nicht einen Namen geben" ist die Verwendung von server_name _;

Ihre http://xxx.xxx.xxx.xxx:9050URL funktioniert mit dieser Konfiguration jedoch nicht. Sie hören nur auf Port 80. Sie müssten auch einen hinzufügen listen 9050;.

Shane Madden
quelle
Hey, können Sie einen Blick auf diese serverfault.com/questions/678521/…
Muhammad Umer
etwas verwandt
Muhammad Umer
5

Servername _; ist kein Platzhalter, siehe hier:

http://blog.gahooa.com/2013/08/21/nginx-how-to-specify-a-default-server

Geben Sie einfach die default_server-Direktive für den Nur-IP-Zugriff an (siehe http://nginx.org/en/docs/http/request_processing.html ).

server {
    listen 1.2.3.4:80 default_server;
    ... 
    }
Joe
quelle
2
Es wird davon abgeraten, einfach einen Link zu der nützlichen Information zu erstellen und sie nicht in Ihre Antwort aufzunehmen - in diesem Fall server_name _;handelt es sich um eine Nichtübereinstimmung.
BE77Y
1
msgstr "ist kein Platzhalter" == "ist keine Übereinstimmung". Ich bin sicher, sie werden es bekommen.
Joe
2
Die beiden sind nicht gleich; non-match ist das, was ausgegeben wird, wenn nichts anderes zutrifft, während ein Platzhalter für alles zutrifft. Der Punkt hier ist jedoch, dass die nützlichen Informationen in der Antwort enthalten sein sollten, die nicht auf einer anderen Site verlinkt ist (jedoch auf dieser Site gut dargestellt), wie hier beschrieben
BE77Y
Und der Punkt ist, dass dies keine „gute Antwort“ ist, sondern eine Antwort. Entschuldigung, keine Zeit. Wenn Sie es bearbeiten / umschreiben möchten, erteile ich Ihnen die volle Erlaubnis dazu. Andernfalls wissen sie genau, was zu tun ist, und es ist hilfreich. Fühlen Sie sich frei, es umzuschreiben, sonst steht die Antwort.
Joe
3
Wenn Sie "keine Zeit" hatten, eine zusätzliche Zeile mit den relevanten Informationen aufzunehmen, weiß ich ehrlich gesagt nicht, warum Sie sich die Mühe gemacht haben, einen 3 Jahre alten Beitrag mit einer akzeptierten Antwort zu beantworten!
BE77Y
4

Wenn Ihre App ohne bestimmten Hostnamen auf Port 9050 antworten soll, können Sie Servername einfach überspringen. Dies ist nicht erforderlich, da Nginx zuerst den Listen-Eintrag und dann den Servernamen auflöst, falls vorhanden:

server {
   listen 9050;

   .....
}

Weitere Details hier: Nginx Servername und wie es funktioniert

Gansbrest
quelle