Рейтинг:1

Перенаправление защищенного домена на другой через CNAME и контейнер Nginx Docker.

флаг jp

Обновлять: Я добавил вторую попытку внизу этого поста. Это «работает», но я хотел бы, чтобы моя первоначальная идея работала.

Я пытаюсь перенаправить https-запрос для домена на другой через сервер перенаправления.

я использую https://website.com, https://website2.com, и https://myredirectserver.com Например.

У меня есть SSL-сертификат, приобретенный для сайт.com, и его DNS CNAMED в www к myredirectserver.com. Существует также SSL-сертификат для мой сайт2.com, и в настоящее время он находится на сервере. Все хорошо, как отдельный домен.

myredirectserver.com имеет две записи A управления трафиком (высокая доступность), которые указывают на два IP-адреса.

Эти два IP-адреса подключены через NAT в брандмауэре к прокси-серверу.

На этом прокси-сервере есть контейнер Docker, на котором работает Alpine/Nginx.

Dockerfile для контейнера:

ОТ nginx: 1.17.7-alpine    
ЗАПУСК apk добавить --no-cache tzdata    
ENV TZ Америка/Чикаго    
ЗАПУСК rm /etc/nginx/conf.d/default.conf    
КОПИРОВАТЬ myredirectserver.com.conf /etc/nginx/conf.d/myredirectserver.com.conf
ЗАПУСК rm /etc/nginx/nginx.conf    
скопируйте nginx.conf /etc/nginx/nginx.conf    
КОПИРОВАТЬ myredirectserver.com.crt /etc/nginx/ssl/myredirectserver.com.crt    
КОПИРОВАТЬ myredirectserver.com.key /etc/nginx/ssl/myredirectserver.com.key    
КОПИРОВАТЬ proxy_params /etc/nginx/proxy_params

докер запустить часть, чтобы запустить его (есть тома, смонтированные для динамического создания файла конфигурации с помощью внутреннего кода):

docker run --name=myredirectserver --restart always --log-opt max-size=50m --log-opt max-file=5 -d -v /etc/nginx/myredirectserverBuild:/etc/nginx/myredirectserverBuild -v /etc/nginx/myredirectserverSSL:/etc/nginx/myredirectserverSSL -p 8224:443 -p 8223:80 myredirectserver

В этом контейнере Docker файл конфигурации Nginx находится в /etc/nginx/conf.d/myredirectserver.com.conf:

 #Я НЕ ЗНАЮ, ПОДХОДИТ ЛИ ЭТО ПРАВИЛЬНО ДЛЯ ТО, ЧТО МНЕ НУЖНО
    сервер {
                слушать 443 ssl;
    
                имя_сервера myredirectserver.com www.myredirectserver.com;
                ssl_certificate /etc/nginx/ssl/myredirectserver.com.crt;
                ssl_certificate_key /etc/nginx/ssl/myredirectserver.com.key;
            }
            сервер {
                слушать 80;
                имя_сервера myredirectserver.com www.myredirectserver.com;
                вернуть 301 https://www.myredirectserver.com$request_uri;
            }
    
    включить /etc/nginx/myredirectserverBuild/*.conf;

Включаемый файл в конце содержит оригинальный запрошенный домен, мой веб-сайт.com.conf:

 ## виртуальный хост www.mywebsite.com
        сервер {
            слушать 443 ssl;

            имя_сервера mywebsite.com www.mywebsite.com;
            ssl_certificate /etc/nginx/myredirectwebsiteSSL/mywebsite.com.crt;
            ssl_certificate_key /etc/nginx/myredirectwebsiteSSL/mywebsite.com.key;               
        }
        сервер {
            слушать 80;
            имя_сервера mywebsite.com www.mywebsite.com;
            вернуть 301 https://www.mywebsite2.com$request_uri; <--- Перенаправление
        }
        

сайт2.com домен находится на хост-сервере, и я могу запросить его как обычно. Я просто не могу понять, где я ошибся. Я чувствую, что это в моей конфигурации Nginx, но мой синтаксис Nginx не самый лучший. Почему мой вернуть 301 не работает и перенаправляет меня на домен?

Несколько замечаний во время устранения неполадок:

wget 0.0.0.0:8223 возвращает:

  --2021-07-26 23:44:19-- http://0.0.0.0:8223/
Подключение к 0.0.0.0:8223... подключено.
HTTP-запрос отправлен, ожидается ответ... 301 Перемещено навсегда
Расположение: https://www.mywebsite2.com/ [следующий]
--2021-07-25 23:44:19-- https://www.mywebsite2.com/
Разрешение www.mywebsite2.com (www.mywebsite2.com)... XX.XXX.XXX.XXX
Подключение к www.mywebsite2.com (www.mywebsite2.com)|XX.XXX.XXX.XXX|:443... подключено.
HTTP-запрос отправлен, ожидается ответ... 200 OK
Длина: не указана [текст/html]
Сохранение в: «index.html».

index.html [ <=> ] 37,56K 231 КБ/с за 0,2 с    

25.07.2021, 23:44:20 (231 КБ/с) — «index.html» сохранен [38461]

curl --resolve www.myredirectserver.com:8223:0.0.0.0 http://www.myredirectserver.com/ возвращает тайм-аут, как и браузер.

Находясь в локальной сети, ввод IP-адреса Docker-контейнера в адресную строку (192.168.69.140:8223) приводит меня к https://www.website2.com.

Вход https://192.168.69.140:8224 переводит меня на страницу с предупреждением о безопасности. Нажмите продолжить, и это дает мне 404.

Я в недоумении, потому что не знаю, как обрабатывать запрос, когда он достигает IP-адреса CNAME. myredirectserver.com. Как я могу сказать Nginx посмотреть исходный запрошенный домен сайт.com?

Обновление (вторая попытка):

Я остановил контейнер Docker и изменил CNAME в www уровень в DNS, чтобы указать на уже существующий высокодоступный IP-адрес. я позвоню сервер назначения.net. Итак, в основном:

`mywebsite.com`
|
|---> CNAME 'destinationserver.net'

`destinationserver.net`
|
|----> A XX.XXX.XXX.XXX --> Брандмауэр --> Прокси

|----> A XX.XXX.XXX.XXX --> Брандмауэр --> Прокси

На сервер назначения.net сервер, у меня есть следующее в конфигурации Nginx для сайт.com:

# ## www.mywebsite.com виртуальный хост
        сервер {
            слушать 8222 ssl;

            имя_сервера mywebsite.com www.mywebsite.com;
            ssl_certificate /etc/nginx/ssl/mywebsite.com.crt;
            ssl_certificate_key /etc/nginx/ssl/mywebsite.com.key;
            вернуть 301 http://www.mywebsite2.com$request_uri;
        }
        сервер {
            слушать 8221;
            имя_сервера mywebsite.com www.mywebsite.com;
            вернуть 301 https://www.mywebsite2$request_uri;
        } 

Как я сказал в «Обновлении» в первой строке вопроса, это «работает», но было бы неплохо обрабатывать эти перенаправления в отдельном пространстве, отсюда и идея контейнера Docker.

Рейтинг:0
флаг jp

Я отказался от идеи сервера перенаправления и вместо этого выбрал две вещи:

Я добавил ANAME (псевдоним) в корневой домен, поэтому www запросы будут направляться в то же расположение высокодоступного диспетчера трафика, что и не-www Запросы. Затем, в Nginx config я добавил следующее для перенаправления запросов:

# ## www.mywebsite.com виртуальный хост
        сервер {
            слушать 8222 ssl;

            имя_сервера mywebsite.com www.mywebsite.com;
            ssl_certificate /etc/nginx/ssl/mywebsite.com.crt;
            ssl_certificate_key /etc/nginx/ssl/mywebsite.com.key;
            вернуть 301 https://www.mywebsite2.com$request_uri;
        }
        сервер {
            слушать 8221;
            имя_сервера mywebsite.com www.mywebsite.com;
            вернуть 301 https://www.mywebsite2$request_uri;
        } 

Это работает для того, что мне нужно, поэтому, если кто-то не предложит лучший метод, я оставлю его как есть.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.