NGINX突然停止了代理请求

时间:2018-08-19 17:24:08

标签: nginx timeout reverse-proxy

我已经设置了NGINX服务器来提供静态内容。而且,此NGINX代理可以将来自机器人的请求发送到预渲染服务。突然,也没有任何明显的原因,NGINX停止将这些请求重定向到服务。相反,NGINX继续响应504超时。我不明白为什么它突然发生(而不是定期发生),以及它背后的原因。我分析了请求日志,但找不到模式。

我在Ubuntu 16.04机器上运行了NGINX v1.10.3。

以下是NGINX的配置文件:

nginx.conf:

events {
worker_connections 768;
# multi_accept on;
}

http {

##
# Basic Settings
##
client_max_body_size 20M;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
proxy_connect_timeout       10s;
proxy_send_timeout          10s;
proxy_read_timeout          10s;
send_timeout                10s;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;

real_ip_header X-Forwarded-For;
    set_real_ip_from 10.0.0.0/8;

# server_names_hash_bucket_size 64;
# server_name_in_redirect off;

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

##
# SSL Settings
##

ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;

##
# Logging Settings
##


log_format main '"$time_local" client=$remote_addr '
           'method=$request_method request="$request" '
           'request_length=$request_length '
           'status=$status bytes_sent=$bytes_sent '
           'body_bytes_sent=$body_bytes_sent '
           'referer=$http_referer '
           'user_agent="$http_user_agent" '
           'upstream_addr=$upstream_addr '
           'upstream_status=$upstream_status '
           'request_time=$request_time '
           'upstream_response_time=$upstream_response_time '
           'upstream_connect_time=$upstream_connect_time '
           'upstream_header_time=$upstream_header_time';

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



##
# Gzip Settings
##

gzip on;
gzip_disable "msie6";

# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

##
# Virtual Host Configs
##

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

虚拟服务器:

server {
    listen 443 ssl http2;
    server_name serverName.com;

    ssl on;
    ssl_certificate <crtLocation>;
    ssl_certificate_key <keyLocation>;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; 
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';

add_header 'Access-Control-Allow-Origin' "$http_origin" always;
    add_header 'Access-Control-Allow-Credentials' 'true' always;
    add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS' always;
    add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With' always;

client_body_timeout 7s;
    client_header_timeout 7s;


location / {
    set $prerender 0;

        if ($http_user_agent ~* "Google|Googlebot|Googlebot\-News|Googlebot\-Image|Googlebot\-Video|Mediapartners\-Google|AdsBot\-Google|Bingbot|MSNBot|MSNBot\-Media|AdIdxBot|BingPreview|Slurp|DuckDuckBot|Baiduspider|Baiduspider|Baiduspider|Yandexbot|facebookexternalhit|FacebookExternalHit|Facebot|Twitterbot|LinkedInBot|rogerbot|DotBot|MJ12bot|AhrefsBot|ia\_archiver|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator"){
            set $prerender 1;
        }
        if ($args ~ "_escaped_fragment_") {
           set $prerender 1;
        }
        if ($http_user_agent ~ "Prerender") {
           set $prerender 0;
        }
        if ($uri ~* "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg|eot)"){
            set $prerender 0;
        }

    if ($prerender = 1) {
            rewrite .* /$scheme://$host$request_uri? break;
            proxy_pass <proxy server>;
        }
        try_files $uri $uri/ /index.php;
}

location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler
        rewrite ^(.*.php)/ $1 last;
    }

location ~ \.php$ {
    include fastcgi.conf;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    try_files $uri =404;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
    fastcgi_index index.php;
}
} 

0 个答案:

没有答案