我目前正在为我的网站创建一个 api,使用 nodejs 和 nginx,我已经为我将要运行的每个 nodejs 应用程序设置了反向代理(api、主站点、其他东西......)。
但是,当我尝试我的 api 时,它会在每一秒的请求上使用很长时间,有时会超时..
配置文件
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes 24;
error_log /var/log/nginx/error.log;
#error_log /var/log/nginx/error.log notice;
#error_log /var/log/nginx/error.log info;
pid /var/run/nginx.pid;
events {
worker_connections 19000;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
#SSL performance tuning
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 10s;
add_header Strict-Transport-Security "max-age=31536000";
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 10;
gzip on;
gzip_disable "msie6";
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml application/javascript text/css application/x-javascript;
#for mulyiple domains, www.codewolf.red, codewolf.red
server_names_hash_bucket_size 64;
# Load config files from the /etc/nginx/conf.d directory
# The default server is in conf.d/default.conf
include /etc/nginx/conf.d/*.conf;
}
Run Code Online (Sandbox Code Playgroud)
错误日志
2014/10/27 14:26:46 [error] 6968#8992: *15 WSARecv() failed (10054: FormatMessage() error:(317)) while reading response header from upstream, client: ::1, server: localhost, request: "GET /api/ffd/users HTTP/1.1", upstream: "http://127.0.0.1:3000/ffd/users", host: "localhost"
2014/10/27 14:27:46 [error] 6968#8992: *15 upstream timed out (10060: FormatMessage() error:(317)) while connecting to upstream, client: ::1, server: localhost, request: "GET /api/ffd/users HTTP/1.1", upstream: "http://[::1]:3000/ffd/users", host: "localhost"
2014/10/27 14:39:31 [error] 6968#8992: *20 upstream timed out (10060: FormatMessage() error:(317)) while connecting to upstream, client: ::1, server: localhost, request: "GET /api/ffd/users HTTP/1.1", upstream: "http://[::1]:3000/ffd/users", host: "localhost"
2014/10/27 14:40:09 [notice] 5300#1352: signal process started
Run Code Online (Sandbox Code Playgroud)
知道出了什么问题吗?已经有一段时间了,它杀死了我:(
请帮忙,它正在破坏我开发应用程序的时间:/
添加这个是因为这对我有用
https://forum.nginx.org/read.php?15,239760,239760似乎表明您可以通过 proxy_pass 到 127.0.0.1 而不是 localhost 并且请求通过正常
麦克布雷施
一岁了,但我想指出这个问题有一个解决方法。就像 Cruz Fernandez 写的那样,您可以在 proxy_pass 指令上设置 127.0.0.1 而不是 localhost。这可以防止每秒请求 60 秒的延迟。我使用的是 Windows 8.1 和 nginx 1.9.5。
克鲁兹费尔南德斯写道:
您可以使用 127.0.0.1(而不是 proxy_pass 指令中的 localhost)
location /nodejsServer/ {
proxy_pass http://127.0.0.1:3000/;
}
Run Code Online (Sandbox Code Playgroud)
我能够通过使用上游语句来解决这个问题。
例如。:
upstream nodejs_server {
server 192.168.0.67:8080; #ip to nodejs server
}
#server config
server {
location /nodejsServer/ { #http://localhost/nodejsServer/
proxy_pass http://nodejs_server;
}
}
Run Code Online (Sandbox Code Playgroud)
参考: http: //nginx.org/en/docs/http/ngx_http_upstream_module.html
| 归档时间: |
|
| 查看次数: |
4304 次 |
| 最近记录: |