Рейтинг:0

Nginx http не перенаправляет на https

флаг pl

ПРИМЕЧАНИЕ. Ранее я задавал этот вопрос на StackOverflow, но не получил ответа.


Да, этот вопрос задавали несколько раз, и да, я рассмотрел все решения, принятые или нет. Но все же столкнулся с проблемой.

я может получить доступ веб-сайт в https://example.in но Nginx не перенаправляет http://пример.in к https://example.in

Я запускаю NGINX внутри докера.

Конфигурации Nginx

сервер {
        слушать 80 default_server;
        слушать [::]:80 default_server;

        имя_сервера пример.in www.example.in;

        вернуть 301 https://$server_name$request_uri;
}

сервер {
        слушать 443 ssl;
        имя_сервера пример.in www.example.in;
        ssl_certificate /etc/nginx/certs/example.in.crt;
        ssl_certificate_key /etc/nginx/certs/example.in.key;

        местоположение/статический {
                псевдоним /vol/web/;
        }

        место расположения / {
                uwsgi_pass ${APP_HOST}:${APP_PORT};
                включить /etc/nginx/uwsgi_params;
                client_max_body_size 10M;
        }
}

Dockerfile для Nginx есть

ОТ nginx: 1.21.3
ЯРЛЫКmaintainer="example.in"

КОПИРОВАТЬ ./default.conf.tpl /etc/nginx/default.conf.tpl
КОПИРОВАТЬ ./uwsgi_params /etc/nginx/uwsgi_params
КОПИРОВАТЬ ./data/certs/example.in.crt /etc/nginx/certs/
КОПИРОВАТЬ ./data/certs/example.in.key /etc/nginx/certs/
КОПИРОВАТЬ ./run.sh /run.sh

ENV LISTEN_PORT=8000
ENV APP_HOST=приложение
ENV APP_PORT = 9000

RUN mkdir -p /vol/static && \
    chmod 755 /vol/static && \
    коснитесь /etc/nginx/conf.d/default.conf && \
    chown nginx:nginx /etc/nginx/conf.d/default.conf && \
    chmod +x /run.sh && \
    chmod +r /etc/nginx/certs/example.in.crt && \
    chmod +r /etc/nginx/certs/example.in.key

VOLUME /vol/static

CMD ["/run.sh"]

докер-compose.yml

версия: '3.9'

Сервисы:
  приложение:
    строить:
      контекст: .
    перезапуск: всегда
    тома:
      - статические данные:/vol/web
    среда:
      - ... (некоторые переменные окружения)
    
  прокси:
    строить:
      контекст: ./прокси
    перезапуск: всегда
    зависит от:
      - приложение
    порты:
      - "80:8000"
      - "443:443"
    тома:
      - статические данные:/vol/web
      - ./данные/сертификаты:/etc/nginx/сертификаты

тома:
  статические данные:

Упомянутое здесь приложение — это веб-приложение Django, обслуживающее статические файлы через Nginx.

До этого я никогда не работал с Nginx.

Еще немного информации, которая может быть полезна для отладки:

  1. Журналы контейнера докеров <nginx-container-id> не показывать журналы для попыток доступа по http.
  2. Проверено с помощью брандмауэра Linux, и порт 80 доступен.

PS: Несколько дней назад я столкнулся с другой проблемой с конфигурацией Nginx, которая была полной противоположностью этой. Если вам нужна ссылка на это, см. этот вопрос. Однако я смог найти решение сам и поделился им там же.

флаг in
Пожалуйста, покажите, какие порты вы сопоставили с докером.
Japkeerat Singh avatar
флаг pl
@GeraldSchneider Добавлено
флаг in
И, пожалуйста, не переписывайтесь. Помимо того, что ваш вопрос совершенно не по теме для [so], перекрестная публикация запрещена в сети Stack Exchange.
Japkeerat Singh avatar
флаг pl
Я не знал, что это запрещено. Мои извинения.
Рейтинг:1
флаг in

Вы сопоставляете порт 80 с портом 8000 в файле docker-compose.yml. Ваши запросы никогда не достигают nginx.

порты:
  - "80:80"
  - "443:443"
Japkeerat Singh avatar
флаг pl
Не понял этого. Я искал ошибки во всех местах, кроме этого. Спасибо огромное!

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

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