Am două proxy-uri nginx configurate pe mașina mea, unul pentru a despacheta SSL și celălalt pentru a face proxy specific aplicației (doar al doilea este controlat de versiune). Când aveam un singur proxy, am reușit să realizez conexiuni websocket de succes, dar după ce am trecut la două, toate solicitările de actualizare websocket primesc o eroare 502 Bad Gateway. Pot confirma că solicitările normale http/https funcționează cu configurarea mea de proxy dublu. Iată configurația mea curentă.
Proxy 1
Server {
# Configurare SSL
#
# asculta 443 ssl default_server;
# asculta [::]:443 ssl default_server;
#
# Notă: ar trebui să dezactivați gzip pentru traficul SSL.
# Vezi: https://bugs.debian.org/773332
#
# Citiți informații despre ssl_ciphers pentru a asigura o configurație sigură.
# Vezi: https://bugs.debian.org/765782
#
# Certificate autosemnate generate de pachetul ssl-cert
# Nu le folosiți pe un server de producție!
#
# include snippets/snakeoil.conf;
nume_server staging.ambitx.io;
Locație / {
proxy_pass http://127.0.0.1:81;
include proxy_params;
}
asculta [::]:443 ssl ipv6only=on; # gestionat de Certbot
asculta 443 ssl; # gestionat de Certbot
ssl_certificate /etc/letsencrypt/live/staging.ambitx.io/fullchain.pem; # gestionat de Certbot
ssl_certificate_key /etc/letsencrypt/live/staging.ambitx.io/privkey.pem; # gestionat de Certbot
includ /etc/letsencrypt/options-ssl-nginx.conf; # gestionat de Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # gestionat de Certbot
}
Server {
dacă ($gazdă = staging.ambitx.io) {
returnează 301 https://$host$request_uri;
} # gestionat de Certbot
asculta 80 default_server;
asculta [::]:80 default_server;
nume_server staging.ambitx.io;
întoarce 404; # gestionat de Certbot
}
proxy_params
proxy_set_header Gazdă $http_host;
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $schema;
Proxy 2
(rulează pe docker cu portul 81 de pe mașina gazdă legat de portul 80 de pe container)
resolver 127.0.0.11 ipv6=off;
Server {
asculta 80;
asculta [::]:80;
Locație / {
rădăcină /var/www/staticfiles;
index index.html index.htm;
try_files $uri /index.html =404;
}
locație /ws {
access_log off;
proxy_pass http://wserver;
proxy_http_versiunea 1.1;
proxy_set_header Actualizare $http_upgrade;
proxy_set_header Conexiune „upgrade”;
}
locație /api {
proxy_pass http://apiserver;
}
}
Am avut inițial declarațiile de mai jos în locație /ws
bloc de configurare a lui Proxy 2...
proxy_set_header X-Real-IP $adresă_la distanță;
proxy_set_header Gazdă $gazdă;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
dar le-am eliminat pentru că ar suprascrie anteturile setate de Proxy 1.
Vreo idee? Vă rog să-mi spuneți dacă aveți nevoie de mai multe informații.