Pour un graceful shutdown de nginx, il faut un SIGQUIT
Kubernetes envoie du SIGTERM alors on peut utiliser un preStop script pour être + cool
https://kubernetes.io/docs/tasks/configure-pod-container/attach-handler-lifecycle-event/#define-poststart-and-prestop-handlers
On peut aussi utiliser le preStop pour s'assuret que le container nginx sidecar s'arrête bien avant l'autre container en posant un lock dans un shared volume. Le preStop de l'autre container va attendre que le lock soit supprimé pour se couper. Le preStop du nginx va supprimer le lock quand il a bien terminé.
On crée le lock dans un postStart
via Meetup k8s bbc speaker
Très intéressant l'algo utilisé par nginx pour choisir le bloc server et ensuite le bloc location. Je me demande si il existe des astuces pour debug en cas de problèmes... (comment savoir dans quel(s) bloc(s) passe une request ?)
Un truc important :
During searching for a virtual server by name, if the name matches more than one of the specified variants, (e.g. both a wildcard name and regular expression match), the first matching variant will be chosen, in the following order of priority:
the exact name
the longest wildcard name starting with an asterisk, e.g. “*.example.com”
the longest wildcard name ending with an asterisk, e.g. “mail.*”
the first matching regular expression (in order of appearance in the configuration file)
Un lb en Go qui peut "surveiller" les backends comme Docker par exemple pour update sa conf
The need for X-Accel-Redirect (and it’s sibling X-Sendfile) comes from two distinct requirements
The need to deliver large files.
The need for those files to not be available to the public.
Je me demandais pourquoi mes allow from x.x.x.x ne marchait plus au niveau de on apache... C'est pourtant con, j'ai un haproxy en frontal maintenant ! donc apache voit tout venir de 127.0.0.1 et les allow ne sont plus valides.
Pour résoudre le probleme on peut installer ce mod qui va prendre l'ip dans les headers ajoutés par haproxy (x-forwarded-for) et la considérer comme l'ip source.
rsyslog intègre une limitation soft pour ne pas pourrir les IO en cas de mass logs non voulus
Dans certains cas les valeurs par défaut sont un peu faible, suffit de les up un peu en surveillant les io disk ;)
Pas con le coup de bien formater les logs pour que logstash ait moins de boulot de parsing de son côté.
le server-status de nginx : comment interpréter l'output
Interpretation
Active connections – Number of all open connections. This doesn’t mean number of users. A single user, for a single pageview can open many concurrent connections to your server.
Server accepts handled requests – This shows three values.
First is total accepted connections.
Second is total handled connections. Usually first 2 values are same.
Third value is number of and handles requests. This is usually greater than second value.
Dividing third-value by second-one will give you number of requests per connection handled by Nginx. In above example, 10993/7368, 1.49 requests per connections.
Reading – nginx reads request header
Writing – nginx reads request body, processes request, or writes response to a client
Waiting – keep-alive connections, actually it is active – (reading + writing).This value depends on keepalive-timeout. Do not confuse non-zero waiting value for poor performance. It can be ignored. Although, you can force zero waiting by setting keepalive_timeout 0;
Une solution pour cacher la demande de catalogue..
Dans cet article il ne parle pas de cacher les demande de metadata, mais c'est aussi une bonne idée.
Pour que ce soit viable, la validité du cache ne doit pas être trop longue et il faut pouvoir le vider à la main.
à tester
Petite chose à savoir côté conf nginx : chaque header appartenant à la requête est disponible sous la forme d'une variable portant le nom : $http_name
avec "name" = le nom du header en remplaçant les "-" par des "_" et le tout en minuscule, ouf.
Exemple : X-Header-De-la-mort devient : $http_x_header_de_la_mort
Utile pour introduire de la logique conditionnelle sur ces headers :)
Logstalgia is a website traffic visualization that replays or streams web-server access logs as a pong-like battle between the web server and an never ending torrent of requests.
intro à l'offloading ssl de nginx
Apache qui passe en dessous de IIS c'est pour bientôt d'après la tendance :o
Est-ce que l'opensource recule ? Non surement que beaucoup de monde switch de nginx à apache ?
Pour monitorer en temps réel un nginx
Bon article sur quelques subtilités ssl
via Skunnyk
Pour garder le header host original :
proxy_set_header Host $http_host;
ou
proxy_set_header Host $host;
Sinon le header host est re-écrit par nginx avant de balancer la requete aux serveurs derriere.
L'explication du pourquoi comment de ces deux lignes :
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;