Back end on node.js.
In one of the cases, it is necessary to handle the gap of the http connection with your hands (for example, if the cunning Russian hackers sawed through the Friendship chainsaw a cable channel with a twisted pair, while laughing insanely and shouting blasphemy).
I subscribe req.on ('close', () => {I do something ...}), I test locally - everything is fine.
But on the prod, the node hangs over nginx. And when the connection is broken between the browser and nginx, the connection between nginx and the node is not broken, and my handler does not work.
Is it possible to somehow override this behavior of nginx?
nginx.conf:
user www-data; worker_processes auto; pid /run/nginx.pid; include /etc/nginx/modules-enabled/*.conf; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 204800; # set client body size to 2M # client_max_body_size 3200M; # server_tokens off; # 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 ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; # 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/*; } sites-available / default:
><server { listen 80 default_server; listen [::]:80 default_server; root /home/superuser/serverside/static/; index index.html; location / { try_files $uri $uri/ /index.html; proxy_set_header Host $http_host; proxy_redirect off; } location /api/ { proxy_pass http://localhost:2222; proxy_http_version 1.1; } location /socket.io/ { proxy_pass http://localhost:2222; proxy_http_version 1.1; } } In the handler for an example I write:
req.on('close', (e) => { console.log('close!'); console.log('e:'); console.log(e); }); In the console I see:
close!
e:
undefined
closeevent handler code to studio - nörbörnën