Перенаправление HTTP на HTTPS (перенаправление промежуточного программного обеспечения против Nginx)

Я хочу спросить о HTTP-to-HTTPS перенаправлениях. Как мы знаем WWW-to-none-WWW перенаправления происходят путем перенаправления со стороны веб-сервера. Но когда дело доходит до перенаправления https, это можно сделать обоими способами: на стороне сервера (Nginx etc...) и на стороне приложения (Middleware). Я хочу знать:

  1. Какой из способов эффективнее и имеет большую результативность.
  2. Плюсы и минусы каждого способа с учетом нескольких top-level доменов и sub-domain доменов на одном сервере.

Спасибо.

Ссылка:

  1. Перенаправление WWW на не-WWW в Laravel – 1 Ответ
  2. Перенаправление HTTP на HTTPS в Laravel – 2 Ответа
  3. HTTP-запрос к HTTPS на nginx — nixCraft
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
220
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Перенаправление на основе сервера здесь должно быть более производительным, поскольку оно происходит до того, как загрузится какой-либо код приложения.

Лично я всегда делаю это в блоке nginx server{} для всех сайтов. Я создаю файл conf для домена и имею 2 блока server{}, один из которых прослушивает 443 для HTTPS-трафика, а другой — просто распознает (суб)домен и выполняет перенаправление на протокол HTTPS.

Вот пример блока перенаправления server{}, который у меня есть для определенного поддомена:

server {
    server_tokens off;
    listen 80;
    server_name sub.domain.com;
    return 301 https://sub.domain.com$request_uri;
}

Что касается плюсов и минусов для серверов, то очевидными я бы назвал:

Плюсы

  • Представление
  • Простота

Минусы

  • требуется root-доступ (по крайней мере, для nginx, Apache вы можете сделать это в файле .htaccess, но это само по себе снижает производительность)
  • Невозможно так легко изменить ситуацию на лету (гибкость?)

Отличный ответ. Но один вопрос; Если я выполняю перенаправление на стороне сервера, нужно ли мне что-либо менять в моем проекте Laravel (игнорируя установленные мной сторонние пакеты), кроме изменения переменной среды APP_URL? приложение автоматически изменит все мои маршруты и URL-адреса на https?

Abdalla Arbab 27.03.2019 17:00

Пока вы не используете полные пути для маршрутов/активов (изображения/css/js и т. д.), а просто используете пути URI, например; /path/to/something, то, кроме APP_URL, как вы заметили, ничего менять не нужно (я разрабатываю под HTTP, но производство всегда HTTPS). Что касается активов, если вы также указали их (суб)домен, вы можете просто удалить протокол, например: <img src = "//sub.domain.com/some-image.png" alt = ""> Затем будет использоваться текущий протокол (HTTP или HTTPS, независимо от того, как осуществляется доступ к сайту) и загрузить соответственно

Ian.H 27.03.2019 22:05

Идеально. Я подожду, чтобы проверить, если кто-то еще готов ответить. Если я ничего не получил, ваше будет принято. Большое спасибо за полный ответ.

Abdalla Arbab 27.03.2019 23:25

Теперь этот ответ выглядит более чем идеальным для меня. Спасибо.

Abdalla Arbab 29.03.2019 15:02

Другие вопросы по теме