Mam podstawową konfigurację Nginx dla interfejsu API węzła i nie mogę zrozumieć, co robię źle.
Mój plik Nginx wygląda następująco:
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/*;
}
a następnie w moim /etc/nginx/conf.d/ mam plik proxy.conf, który wygląda następująco:
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;
}
}
Proxy z lokalizacji "/" działa dobrze, alePróba podania proxy do innego portu na serwerze przekracza limit czasu, ponieważ nie może go osiągnąć lub spowoduje błąd 403. Próbowałem użyć adresu IP i localhost. Czy ktoś może mi pomóc? Z góry dziękuję.
EDYTOWAĆ:
The /
blok lokalizacji działa i /api
lokalizacja nie jest. Próbuję proxy /api
lokalizacja do portu 3005 na serwerze. Czy muszę proxy do localhost lub czy muszę proxy do IP / port mojego serwera? Próbowałem obu, więc zakładam, że jest problem z moją składnią. czego mi brakuje? Dzięki.
Odpowiedzi:
0 dla odpowiedzi № 1Oto, co zwykle robię dla node / 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 dla odpowiedzi nr 2
Znalazłem problem. Okazało się, że nie jest związany z Nginx. Włączyłem ruch TCP na mojej instancji AWS EC2 i serwer proxy działał.