CNAME в приложение Heroku приводит к перенаправлению 301

TL; DR : Я хотите, чтобы в адресной строке отображался мой персональный домен, а не CNAME.

У меня есть приложение, размещенное на Heroku по адресу try-elixir-phoenix.herokuapp.com .

Я купил домен у Namecheap и настроил там запись CNAME:

www.tryelixir.online CNAME try-elixir-phoenix.herokuapp.com.

Я также настроил пользовательские домены в heroku:

 $ heroku domains
=== try-elixir-phoenix Heroku Domain
try-elixir-phoenix.herokuapp.com

=== try-elixir-phoenix Custom Domains
Domain Name           DNS Target
────────────────────  ────────────────────────────────
tryelixir.online      try-elixir-phoenix.herokuapp.com
www.tryelixir.online  try-elixir-phoenix.herokuapp.com

Но если я скручиваю свой личный домен, я получаю перенаправление 301:

 $ curl --head http://www.tryelixir.online
HTTP/1.1 301 Moved Permanently
Connection: keep-alive
Server: Cowboy
Date: Thu, 25 Feb 2016 15:11:01 GMT
Content-Length: 0
Cache-Control: max-age=0, private, must-revalidate
Location: https://try-elixir-phoenix.herokuapp.com/
Via: 1.1 vegur

Это также означает, что пользователь видит URL herokuapp.com вместо моего пользовательского. .

В документах Heroku говорится, что:

Домен Heroku вашего приложения всегда будет активным, даже если вы установили

В документах Heroku говорится, что:

Домен Heroku вашего приложения всегда будет активным, даже если вы установили

В документах Heroku говорится, что:

Домен Heroku вашего приложения всегда будет активным, даже если вы установили создать собственный домен. Если вы хотите, чтобы пользователи использовали личный домен исключительно, ваше приложение должно отправлять HTTP-статус 301 Постоянно перемещен в указать веб-браузерам использовать личный домен. HTTP-запрос хоста поле заголовка покажет, к какому домену пытается получить доступ пользователь; Отправить перенаправление, если это поле example.herokuapp.com.

Относится ли ко мне вышеизложенное?

0
задан 26 June 2016 в 18:51
3 ответа

Оказывается, перенаправление происходило на уровне приложения. Служба поддержки Heroku подтвердила, что их маршрутизатор не добавляет перенаправления.

0
ответ дан 5 December 2019 в 10:41

Если вы следовали инструкциям , то перед добавлением личного домена вам необходимо обновить конфигурацию:

url: [scheme: "https", host: "mysterious-meadow-6277.herokuapp.com", port: 443], force_ssl: [rewrite_on: [:x_forwarded_proto]]
0
ответ дан 5 December 2019 в 10:41

Для всех остальных, кто сталкивается с этой проблемой, есть быстрое (но небезопасное) решение. Если ваше приложение обрабатывает какие-либо конфиденциальные данные, например, информацию о кредитной карте или данные для входа пользователя в систему, то НЕ используйте этот метод, а вместо этого настройте ваше приложение на работу с SSL.

--- Небезопасное решение ---

В файле config/prod.exs должно быть что-то подобное:

# config/prod.exs 

config :app, App.Endpoint,
  http: [port: {:system, "PORT"}],
  url: [scheme: "https", host: "app.herokuapp.com", port: 443],
  force_ssl: [rewrite_on: [:x_forwarded_proto]],
  cache_static_manifest: "priv/static/manifest.json",
  secret_key_base: System.get_env("SECRET_KEY_BASE")

Вы хотите внести следующие изменения:

  1. Измените схему url с https на http
  2. Удалите force_ssl configuration

Это должно оставить вам нечто подобное:

# config/prod.exs 

config :app, App.Endpoint,
  http: [port: {:system, "PORT"}],
  url: [scheme: "http", host: "app.herokuapp.com", port: 443],
  cache_static_manifest: "priv/static/manifest.json",
  secret_key_base: System.get_env("SECRET_KEY_BASE")

При следующей перестановке вы сможете посещать ваше приложение в вашем пользовательском домене.

.
0
ответ дан 5 December 2019 в 10:41

Теги

Похожие вопросы