Сконфигурируйте NGINX для упаковки не-SSL сервисов с SSL - PullRequest
0 голосов
/ 14 марта 2019

У нас есть веб-сервер и несколько служб узлов, работающих параллельно с веб-сервером. Все службы используют сокеты, а веб-сервер также имеет сокет, с которым браузер связывается со всем этим, используя аспекты обратного прокси-сервера 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 сделает это?).

1 Ответ

0 голосов
/ 14 марта 2019

Да, это исправлено. Я только что удалил proxy_redirect off;, и это сработало.

Теперь это выглядит так:

    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_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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...