У нас есть веб-сервер и несколько служб узлов, работающих параллельно с веб-сервером. Все службы используют сокеты, а веб-сервер также имеет сокет, с которым браузер связывается со всем этим, используя аспекты обратного прокси-сервера NGINX.
Теперь мы хотим настроить NGINX таким образом, чтобы он мог обрабатывать входящие запросы SSL (порт 443), но веб-сервер и сокеты оставались на порте 80 (http / ws), в основном надежно упаковывая конфигурацию.
Мы установили сертификаты (самоподписанные в настоящее время), и я могу заставить его работать с веб-сервером, но все соединения с сокетами получают ошибки.
2019/03/14 10:27:31 [error] 14279#14279: *2 connect() failed (111: Connection refused) while connecting to upstream, client: ::1, server: _, request: "GET /web_app_socket/?EIO=3&transport=polling&t=Mbz1xMB HTTP/2.0", upstream: "http://127.0.0.1:3001/web/socket.io/?EIO=3&transport=polling&t=Mbz1xMB", host: "localhost", referrer: "https://localhost/"
И на стороне клиента я получаю это:
GET https://localhost/liveview/?EIO=3&transport=polling&t=Mbz1vtE 502
Это то, что у меня есть в default
файле конфигурации для NGINX для сокета веб-сервера:
location /web_app_socket/ { ### route the websockets of the web app
#Configure proxy to pass data to upstream service
proxy_pass http://web_app/web/socket.io/;
#HTTP version 1.1 is needed for sockets
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header Referer $http_referer;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_read_timeout 600s;
proxy_connect_timeout 600s;
}
Я перепробовал столько конфигураций, что теряюсь в том, что должно быть правильным способом сделать это (или, может, NGINX сделает это?).