Ошибка смешанного содержимого, устраненная путем перезапуска puma

#ruby #puma

Вопрос:

Я запускаю веб-сайт с использованием puma и ruby.

HTTPS настроен в nginx.

Иногда мы сталкиваемся с ошибкой, как показано на следующем рисунке. И, как ни странно, это решается перезапуском puma. Простой бег sudo systemctl restart puma прояснит это.

Ошибка на веб-сайте

Что не так с моей настройкой?

Почему он обслуживает содержимое в http? И почему это решается только перезапуском puma?

Эта ошибка возникает случайным образом. На прошлой неделе у нас его вообще не было, но на этой неделе уже четыре раза.

Любая помощь, которая поможет мне решить эту проблему навсегда, будет признательна.

Спасибо.


Правки, чтобы ответить на комментарии:

Ниже приведен код, который генерирует ссылки на таблицы стилей:

 <%# stylesheet_link_tag    'application', media: 'all', protocol: :relative %>
<%# javascript_include_tag 'application', protocol: :relative %>
<%= stylesheet_link_tag    'application', controller_name, media: 'all', protocol: :relative %>
<% if session[:responsive].nil? || session[:responsive] == 1 %>
<%= stylesheet_link_tag    "#{controller_name}_responsive", media: 'all', protocol: :relative %>
<% end %>
 

Просмотр источника во время возникновения ошибки показывает, что он http:// находится перед URL-адресом css. После перезапуска puma, это только // без http: этого:

правильный

Комментарии:

1. Как загружаются таблицы стилей в заголовок?

2. Кроме того, конфигурация nginx может быть полезной.

3. Я бы отладил код, в котором <link rel="stylesheet" он отображается. Похоже, с puma это не проблема, похоже, что отображаемый вами HTML начинает запрашивать таблицу стилей HTTP. Повторный запуск Puma, вероятно, сбросит состояние вашего приложения и временно устранит проблему, пока это состояние снова не испортится…

4. @DennyMueller Я поместил код под своим вопросом. Есть что-нибудь, что я должен пересмотреть? Спасибо.

5. Это странная вещь. Итак, URL-адрес показывает что-то вроде //www.foo.bar/style.css ? вы случайно не config.action_controller.asset_host установили в своей конфигурации среды (например, production.rb)?