Comment tester le proxy nginx délais d'attente

Cible:

Je voudrais tester tous les proxy Nginx paramètres de délai d'attente dans le scénario très simple. Ma première approche a été de créer vraiment simple serveur HTTP et de mettre certains délais d'attente:

  1. Entre écouter et accepter de tester proxy_connect_timeout
  2. Entre accepter et lire le test proxy_send_timeout
  3. Entre lire et envoyer pour tester proxy_read_timeout

Test:

1) le Serveur de code (python):

import socket
import os
import time
import threading

def http_resp(conn):
    conn.send("HTTP/1.1 200 OK\r\n")
    conn.send("Content-Length: 0\r\n")
    conn.send("Content-Type: text/xml\r\n\r\n\r\n")

def do(conn, addr):
    print 'Connected by', addr
    print 'Sleeping before reading data...'
    time.sleep(0) # Set to test proxy_send_timeout
    data = conn.recv(1024)
    print 'Sleeping before sending data...'
    time.sleep(0) # Set to test proxy_read_timeout
    http_resp(conn)
    print 'End of data stream, closing connection'
    conn.close()

def main():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind(('', int(os.environ['PORT'])))
    s.listen(1)
    print 'Sleeping before accept...'
    time.sleep(130) # Set to test proxy_connect_timeout
    while 1:
        conn, addr = s.accept()
        t = threading.Thread(target=do, args=(conn, addr))
        t.start()

if __name__ == "__main__":
    main()

2) de configuration de Nginx:

J'ai étendu Nginx configuration par défaut en définissant explicitement proxy_connect_timeout et l'ajout de proxy_pass pointe sur mon serveur HTTP local:

    location / {
        proxy_pass http://localhost:8888;
        proxy_connect_timeout 200;
    }

3) Observation:

proxy_connect_timeout - Même si un réglage à 200 et de dormir uniquement 130s entre écouter et accepter les Nginx retourne 504 après ~60s qui pourrait être en raison de la valeur par défaut proxy_read_timeout valeur. Je ne comprends pas comment proxy_read_timeout pourrait affecter de connexion sorte de stade précoce (avant de l'accepter). Je m'attends à 200 ici. Veuillez expliquer!

proxy_send_timeout - je ne suis pas sûr si mon approche de test proxy_send_timeout est correct, je pense que je ne comprends toujours pas ce paramètre correctement. Après tout, le délai entre accepter et lire ne force pas proxy_send_timeout.

proxy_read_timeout - il semble être assez simple. Réglage du délai entre la lecture et de l'écriture fait le travail.

Donc je suppose que mes hypothèses sont fausses et que probablement je ne comprends pas proxy_connect et proxy_send délais d'attente correctement. Certains peuvent-ils expliquer à moi, en utilisant le test ci-dessus si possible (ou modifier si nécessaire).

OriginalL'auteur mkorszun | 2013-06-24