2016-12-10 8 views
0

Ich habe eine grundlegende Nginx-Konfiguration für eine Node-API und ich kann nicht herausfinden, was ich falsch mache.Nginx-Proxy funktioniert nicht

Meine Nginx-Datei sieht wie folgt aus:

user www-data; 
worker_processes 4; 
pid /run/nginx.pid; 

events { 
    worker_connections 768; 
    multi_accept on; 
} 

http { 

sendfile on; 
tcp_nopush on; 
tcp_nodelay on; 
keepalive_timeout 65; 
types_hash_max_size 2048; 
    server_tokens off; 

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

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

gzip on; 
gzip_disable "msie6"; 

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

und dann in meinem /etc/nginx/conf.d/ habe ich eine proxy.conf, die wie folgt aussieht:

server { 
    listen 80; 
    server_name [domain_name]; 

    add_header Access-Control-Allow-Origin '*'; 

    location/{ 
    proxy_pass [client_endpoint] 
    } 

    location /api { 
    add_header Allow 'POST, GET, PUT'; 

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

    proxy_pass http://XX.XXX.XXX.XXX:3005; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

    } 
} 

Die Proxy von Ort "/" funktioniert gut, aber versuchen, Proxy zu einem anderen Port auf dem Server es Timeout, weil es nicht erreichen kann, oder es wird mir einen Fehler 403 geben. Ich habe versucht, die IP-Adresse und localhost zu verwenden. Kann mir hier jemand helfen? Danke im Voraus.

EDIT:

Der / Standort Block arbeitet und die /api Lage ist nicht. Ich versuche, den /api Standort an Port 3005 auf dem Server zu vermitteln. Muss ich mich an localhost oder an den IP/Port meines Servers anmelden? Ich habe beide ausprobiert, also nehme ich an, dass es ein Problem mit meiner Syntax gibt. Was vermisse ich? Vielen Dank. Hier

+0

(1) Welcher Standortblock gibt Ihnen Probleme? '/' oder '/ api'? (2) Sie versuchen auf Port 3005 auf localhost zuzugreifen? Könntest du deutlicher darüber sein, was deine Frage ist? Es machte mir als Außenleser wenig Sinn. – 2ps

+0

Ich habe meine Frage zur Klärung bearbeitet. Hoffentlich macht das jetzt mehr Sinn. Vielen Dank. – gradorade

Antwort

0

ist, was ich in der Regel für tun Knoten/nginx:

upstream nodejs { 
    server 127.0.0.1:3005; 
    keepalive 256; 
} 

server { 
    . . . 

    location /api { 
    add_header Allow 'POST, GET, PUT'; 

    access_log /var/log/nginx/access.log; 
    error_log /var/log/nginx/error.log; 
    proxy_set_header  Connection ""; 
    proxy_http_version  1.1; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_pass http://nodejs; 
    } 
} 
0

Ich fand das Problem. Es stellte sich heraus, dass es nicht mit Nginx verwandt war. Ich habe TCP-Verkehr auf meiner AWS EC2-Instanz aktiviert und der Proxy funktioniert.

+0

wo hast du es genau in den ec2-einstellungen gemacht? – doniyor

+1

In der EC2-Sicherheitsgruppe – gradorade

Verwandte Themen