Использование виртуальной машины Nginx в качестве обратного прокси-сервера для маршрутизации на другие виртуальные машины с использованием поддоменов - PullRequest
0 голосов
/ 28 января 2020

У меня есть сервер, на котором размещено веб-приложение, расположенное на виртуальной машине. Используя iptables, я смог перенести внешние запросы через сервер в веб-приложение, используя SSL-сертификаты в веб-приложении vm. Конечный результат заключается в том, что если вы введете sub.mydomain.com/webapp, он вызовет мой экземпляр webapp.

Я хочу добавить вторую виртуальную машину, на которой будет размещена другая программа, доступная из sub2.mydomain. ком / otherwebapp. Я подумал, что Nginx как обратный прокси-сервер - это то, что мне нужно было использовать.

Для начала я только в настоящее время пытаюсь реверсировать прокси для моего текущего запущенного экземпляра sub.mydomain.com/webapp вместо переадресации портов как я был. Можно было легко начать с малого, а потом развернуть.

Я создал еще одну виртуальную машину под управлением Nginx. Внешние веб-запросы на sub.mydomain.com/webapp направляются в Nginx vm, а затем (надеюсь) передаются на соответствующий поддомен. Сертификаты ssl в настоящее время находятся в webapp vm, я подумал, что было бы хорошо, если бы nginx только направлял веб-запросы и не обрабатывал конфигурацию ssl, а также я вижу, что многие используют nginx для этого.

Похоже, что веб-запрос достигает экземпляра webapp, поскольку он перенаправляется с sub.mydomain.com/webapp на sub.mydomain.com/webapp/index.php

Это мой nginx config:

server {
        listen 443;
        listen [::]:443;

        location / {
        proxy_pass http://10.123.0.1:443;
       }
} 

К сожалению, я получаю сообщение об ошибке:

Произошла ошибка при подключении к sub.mydomain.com. SSL получил запись, превышающую максимально допустимую длину. Код ошибки: SSL_ERROR_RX_RECORD_TOO_LONG

Я попытался изменить конфигурацию на:

server {
        listen 443 ssl;
        listen [::]:443 ssl;

        location / {
        proxy_pass http://10.123.0.1:443;
       }
} 

Но я получаю:

Произошла ошибка при подключении к sub .mydomain.com. PR_END_OF_FILE_ERROR

Я также пытался установить абсолютный URI, используя это:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache0:10M max_size=100G use_temp_path=off;

server {
        listen 443 ssl;
        listen [::]:443 ssl;

        location / {
               proxy_cache cache0;

               rewrite ^(.*)$ "://$http_host$uri$is_args$args" break;
               rewrite ^(.*)$ "http$uri$is_args$args" break;
        proxy_pass http://10.123.0.1:443;
       }
} 

Это никак не повлияло. Я также попытался указать location /webapp { и proxy_pass http://10.123.0.1/webapp:443; безрезультатно. В основном я просто искал коды ошибок, которые я получал, и пробовал решения других людей одно за другим. Это мое странное хобби, все самоучка, и я понятия не имею, где искать или что искать, чтобы достичь того, чего я хотел бы.

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...