http и https — два распространенных протокола сетевой передачи, разница между которыми заключается в безопасности.
HTTP — это передача открытого текста, данные не шифруются во время передачи, и существует риск того, что данные будут прочитаны и изменены. HTTP-передача конфиденциальной информации, такой как пароли, недостаточно безопасна.
https использует протокол SSL или TLS для шифрования данных во время передачи, и данные не будут украдены или подделаны во время передачи.
Порт по умолчанию для http — 80, а для https — 443.
Когда вы входите в браузер для доступаhttp:example.com
час,Фактический визитhttp:example.com:80
。
Когда вы входите в браузер для доступаhttps:example.com
час,Фактический визитhttps:example.com:443
。
При вводе URL-адреса в браузере мы обычно просто вводим:example.com
,этотчас По умолчанию указывается наhttp:example.com
,Если вы хотите получить доступ по протоколу https,Требуется полный префиксhttps:https:example.com
。
для безопасности,Поэтому наш веб-сайт необходимо настроить для доступа только через режим https.,Тогда посетитеexample.com
иhttp:example.com
час Что делать?Ответ - установка Перенаправление,http автоматически Перенаправление на https.
example.com
/ http:example.com
-> https:example.com
В настоящее время, когда вы посещаете веб-сайт, с http или без него, он в конечном итоге будет указывать на https.
Когда доступны порты 80 и 443,Настроить httpПеренаправление на https через Nginx легко.,Просто в файле конфигурацииnginx.conf
Просто сделайте следующую конфигурацию в。
1 2 3 4 5 | server { listen 80; server_name example.com; return 301 https://$server_name$request_uri; } |
---|
listen 80;
- Порт по умолчанию 80 для прослушивания HTTP-запросов.server_name example.com;
- Установите запрошенное имя хоста example.com.return 301
- Возвращает код состояния 301, указывающий на постоянное Перенаправление. Это уведомит браузер о необходимости преобразования HTTP-запросов в HTTPS-запросы.Если порты 80 и 443 недоступны, например, заблокирован публичный IP-адрес домашнего широкополосного доступа, то другие порты можно только выделить.
На данный момент вам необходимо установить порт для каждого из http и https. В качестве примера мы возьмем http:2222 и https:3333.
На данный момент нам нужно добавить номер порта при доступе к веб-сайту.,http:example.com:2222
,https:example.com:3333
。
Поскольку порт указан, каждый раз при вводе адреса доступа будет сложнее, главным образом потому, что вам придется запомнить два порта и различать их. Если вы разрешаете только https, то соответствующий доступ будет иметь следующие ситуации:
http:example.com:2222
Толькоhttpдоступ,В это время будет сообщено об ошибке,Поскольку на сайте разрешен только https,Нужно установить Перенаправлениеприезжатьhttps:example.com:3333
,Давайте сначала настроим его。https:example.com:2222
Сообщим об ошибке,Потому что 2222 — это http-порт.,Не могу зайти по https.http:example.com:3333
Доступ HTTP к https также сообщит об ошибке, указывая, что требуется доступ https. ты должен войти https:example.com:3333
。Подведите итог:
1 2 3 4 5 6 7 8 9 10 11 12 13 | № 2222 и 3333 http:example.com:2222 -> https:example.com:3333 (после перенаправления) https:example.com:2222 Невозможно получить доступ http:example.com:3333 Невозможно получить доступ https:example.com:3333 -> https:example.com:3333 #Сравнить исходный стандартный порт http:example.com -> https:example.com (после перенаправления) https:example.com https:example.com |
---|
Короче говоря, громоздкость в том, что сложно запомнить два порта, и для каждого порта необходимо различать http и https.
Так можно ли этого достичь?
1 2 3 | #Реализовано с использованием только одного нестандартного порта http:example.com:3333 -> https:example.com:3333 https:example.com:3333 https:example.com:3333 |
---|
Ответ — да, вот два метода.
Используйте код ошибки 497 для перенаправления.
Добавлен файл конфигурации Nginx.
1 2 3 4 5 6 | server { listen 3333 ssl; server_name your.site.tld; ssl on; error_page 497 https://$host:3333$request_uri; } |
---|
Здесь реализован принцип использования кодовой страницы ошибки 497.,После того, как мы установили порт прослушивания https на 3333,Если используетсяhttpдоступhttp:example.com:3333
,Nginx вернет страницу с кодом ошибки 497,Сказать тебе плохой запрос,чистый HTTP Запрос отправлен на HTTPS Port, мы можем напрямую изменить страницу 497 на наш https-адрес. В это время доступ к http также возможен, поскольку срабатывает код ошибки 497 и перенаправляется на адрес https.
1 2 3 4 | #497Кодовая страница ошибки 400 неверный запрос Простой HTTP-запрос был отправлен на порт HTTPS. |
---|
Nginx Proxy Для настройки в Manager просто введите следующий код в расширенной настройке хост-агента. `error_page 497 https://host:3333request_uri;
Nginxвнутриstream_ssl_preread
может быть реализовано напрямуюhttpдоступhttps,Конфигурация следующая:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | stream { upstream http { server 127.0.0.1:80; } upstream https { server 127.0.0.1:443; } map $ssl_preread_protocol $upstream { default https; "" http; } server { listen 3333; listen [::]:3333; proxy_pass $upstream; ssl_preread on; } } |
---|