NGINX突然停止代理请求

NGINX突然停止代理请求,nginx,timeout,reverse-proxy,Nginx,Timeout,Reverse Proxy,我设置了一个NGINX服务器来提供静态内容。此外,该NGINX将来自bot的请求代理给预呈现服务。NGINX突然停止了将这些请求重定向到服务的过程,这一过程毫无明显原因。相反,NGINX持续响应504次超时。我不明白为什么它会突然发生(而不是经常发生),以及背后的原因。我分析了请求日志,没有找到模式 我已经在Ubuntu 16.04机器上运行了NGINX v1.10.3 以下是NGINX的配置文件: nginx.conf: events { worker_connections 768; # m

我设置了一个NGINX服务器来提供静态内容。此外,该NGINX将来自bot的请求代理给预呈现服务。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;
}
} 
服务器{
监听443sslhttp2;
服务器名称serverName.com;
ssl-on;
ssl_证书;
ssl_证书_密钥;
ssl_协议TLSv1 TLSv1.1 TLSv1.2;
ssl首选服务器上的密码;
ssl_密码'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
始终添加_头“访问控制允许来源”'$http_来源”;
始终添加_头“访问控制允许凭据”“true”;
始终添加标题“访问控制允许方法”“获取、发布、放置、删除、选项”;
添加_头“访问控制允许头”接受、授权、缓存控制、内容类型、DNT(如果自修改)、保持活动状态、来源、用户代理、X-request-With“始终”;
客户端\主体\超时7秒;
客户端\头\超时7秒;
地点/{
设置$prerender 0;
如果($http\u user\u agent~*"谷歌(谷歌)谷歌(谷歌(谷歌)谷歌(谷歌)谷歌(谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌(谷歌)谷歌(谷歌)谷歌(谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)的准准准准准谷歌(谷歌(谷歌)谷歌(谷歌)谷歌(谷歌(谷歌)的准准准准准准准谷歌(谷歌(谷歌)谷歌(谷歌)的)的谷歌(谷歌(谷歌)准准准准准准准准准准准准准准准日日日)谷歌(谷歌(谷歌)谷歌(谷歌(谷歌)的)谷歌(谷歌(谷歌)谷歌(谷歌)准准准准准准准准准准准准准准谷歌(谷歌(谷歌)谷歌(谷歌)谷歌(谷歌)的)准准准准准准准准准准准准准124; AhrefsBot | ia|u archiver |嵌入| quora\链接\预览| showyoubot | outbrain | pinterest | slackbot | vkShare | W3C | u验证程序|{
设置$prerender 1;
}
if($args~“\u转义\u片段”){
设置$prerender 1;
}
if($http\u user\u agent~“Prerender”){
设置$prerender 0;
}
10月10日当天当天当天当天当天当天的天气数据(10月14日当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天当天的非非G | iso | flv | m4v | torrent | ttf | woff | svg | eot |){
设置$prerender 0;
}
如果($prerender=1){
重写。*/$scheme://$host$request\u uri?中断;
代用通行证;
}
尝试_文件$uri$uri//index.php;
}
location~.php/{##将类似/js/index.php/x.js的路径转发到相关处理程序
最后重写^(.*.php)/$1;
}
位置~\.php${
包括fastcgi.conf;
fastcgi\u split\u path\u info^(.+\.php)(/.+)$;
try_files$uri=404;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index.php;
}
} 

是否将
指定为名称而不是IP地址?如果它在一段时间后停止工作,则可能与DNS查找有关。是的,代理服务器是一个名称。为什么它与DNS查找有关?请您进一步解释一下?重新启动nginx解决了此问题。
nginx
会查找一次IP地址。如果上游地址更改是的,反向代理将停止工作,直到
nginx
重新启动。查看SF。嗨,Richard,你的观点是正确的。我们确实检查了这个问题,事实上,nginx只在启动时解析主机名。我们正在进一步调查这个问题。一旦我们验证了这个问题,我将发布解决方案,并感谢你提供的帮助迪德