Как закрыть клиентское соединение, когда закрытый сервер Nginx закрывается? - PullRequest
0 голосов
/ 02 ноября 2018

(1) У меня есть http-сервер , порт прослушивания 8080, который спит 5 секунд при обработке запроса GET:

class myHandler(BaseHTTPRequestHandler):
def do_GET(self):
    self.send_response(200)
    self.send_header('Content-type','text/html')
    self.end_headers()
    self.wfile.write("Hello World !")
    time.sleep(5)
    print 'after sleep'
    return
try:
    server = HTTPServer(('', 8080), myHandler)
    server.serve_forever()
except KeyboardInterrupt:
    server.socket.close()

(2) У меня nginx, слушаю 1014 и пересылаю запрос на 8080,

upstream kubeapiserver {
    server 127.0.0.1:8080;
    keepalive 30;
}
server {
    listen       1014;
    server_name  127.0.0.1;
    location / {
        proxy_pass http://kubeapiserver;
        proxy_http_version 1.1;
        proxy_connect_timeout 1800s;
        proxy_read_timeout 1800s;
        proxy_send_timeout 1800s;
    }
}

(3) сделать длинный запрос на 1014

import time
url="http://127.0.0.1:1014"
s = requests.Session()
r = s.get(url)
print r.headers
print r.status_code
print r.content
while True:
    time.sleep(10)

И я НАЙДЕЛ с netstat -nap | egrep "(8080)|(1014)", что: когда соединение B закрыто, соединение A все еще установлено

Как закрыть клиентское соединение, когда закрытый сервер Nginx закрывается? Как настроить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...