2013-03-11 16 views
14

Ich versuche, ein minimalistischen Reverse-Proxy, zu laufen und kam mit dem folgenden:nginx einfach proxy_pass localhost nicht funktioniert

events { 
    worker_connections 4096; 
} 

http { 
    server { 
     listen 80; 
     location/{ 
      proxy_pass http://127.0.0.1:3000/; 
     } 
    } 
} 

`

Allerdings, wenn ich Zugriff auf diesen Server, I Holen Sie sich die Standard "Willkommen auf Nginx-Seite", anstelle der Antwort von dem Server auf Port 3000 ausgeführt.

Wenn ich ssh an die Maschine und curl http://127.0.0.1:3000/ ausführen, bekomme ich das gewünschte Ergebnis (und schließlich lief ich diesen Server auf Port 80 und es hat gut funktioniert, also ich kn wie es mit der Reverse-Proxy-Konfiguration zu tun hat).

+0

Die gleiche Konfiguration funktioniert auf meinem devbox in Ordnung. Irgendetwas stimmt nicht mit dem Netzwerk Ihres Webservers. Hast du versucht, dein Netzwerk neu zu starten? –

+0

Sind Sie sicher, dass Sie keine andere Proxy-Direktive in einer anderen Conf-Datei haben? proxy.conf? – Pixou

+0

Macht das Entfernen des abschließenden Schrägstrichs irgendetwas? – Bart

Antwort

22

Ich hatte genau das gleiche Problem. Ich bemerkte nur eine Zeile in meiner nginx.conf Datei aus:

 
include /etc/nginx/sites-enabled/*; 

zu

geändert
 
#include /etc/nginx/sites-enabled/*; 
+9

Das hat bei mir funktioniert, danke. Was deaktiviert es genau? – bengem

+0

Was du sagst, funktioniert nicht. Ich habe keine 'include/etc/nginx/sites-enabled/*;', irgendwo in '/ etc/nginx'-Ordner auskommentieren oder configs noch und erleben Sie das Problem – Green

+0

@Green ein bisschen spät, aber gerade rübergekommen dieses Problem selbst. Die Include-Datei in meinem Fall war '/etc/nginx/conf.d/*. Conf' - dies schließt die Konfiguration für die Standard-Site ein, die mit meiner Site-Konfiguration in Konflikt stand. In Ihrem Fall könnte es ein Problem mit der Proxy-Konfiguration selbst sein – codemonkey

4

Explainng Vijays Post über eine Antwort, da Austausch wird mir noch nicht lassen kommentieren.

Das sites-enabled-Verzeichnis muss möglicherweise deklariert werden, da Sie die Standarddatei nginx.conf verwenden. Sie werden feststellen, dass diese Zeile bereits in der http-Direktive enthalten ist. Wenn Sie die Standardkonfiguration verwenden, definieren Sie eine http-Direktive innerhalb einer anderen http-Direktive neu. Sie könnten auch Ihre Site-Datei aktualisieren, um nur die Server-Direktive und nicht die http-Direktive zu haben.

Norm-ish nginx.conf Datei:

worker_processes 4; 

error_log /var/log/nginx/error.log; 
pid  /var/run/nginx.pid; 

events { 
    worker_connections 1024; 
} 

http { 

    include  /etc/nginx/mime.types; 
    default_type application/octet-stream; 

    access_log /var/log/nginx/access.log; 

    sendfile on; 
    tcp_nopush on; 
    tcp_nodelay on; 

    keepalive_timeout 65; 

    gzip on; 
    gzip_http_version 1.0; 
    gzip_comp_level 5; 
    gzip_proxied any; 
    gzip_vary off; 
    gzip_types text/plain text/css application/x-javascript text/xml application/xml application/rss+xml application/atom+xml text/javascript application/javascript application/json text/mathml; 
    gzip_min_length 1000; 
    gzip_disable  "MSIE [1-6]\."; 

    server_names_hash_bucket_size 64; 
    types_hash_max_size 2048; 
    types_hash_bucket_size 64; 
    client_max_body_size 1024; 

    include /etc/nginx/conf.d/*.conf; 
    include /etc/nginx/sites-enabled/*; 
} 

Beispiel compatiable Site-Datei in sites-enabled:

server { 
    server_name {server name}; 
    listen 80; 
    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 
    location/{ 
     proxy_pass http://example.com:8080; 
     proxy_set_header Host $host; 
    } 
} 
+0

Was Sie sagen, funktioniert nicht.Ich habe keine 'include/etc/nginx/sites-enabled/*;' irgendwo im nginx-Ordner und erlebe das Problem – Green

-1

Überprüfung der Link von sites-enabled zu sites-available könnte auch helfen . Ich hatte den symlink Punkt nach nirgendwo und deshalb hat Nginx nie die Konfiguration gelesen. In meinem Fall war es

ls -lh /etc/nginx/sites-enabled 
lrwxrwxrwx 1 root root 23 Feb 19 11:11 default -> sites-available/default 

statt

ls -lh /etc/nginx/sites-enabled 
lrwxrwxrwx 1 root root 23 Feb 19 11:11 default -> ../sites-available/default 
Verwandte Themen