Я постараюсь кратко рассказать о том, как я сюда попал, но это было о трехдневном путешествии.
В течение многих лет выкладывали «демо» приложения где-то в моей сети, чтобы другие люди могли посмотреть на них.и дайте мне отзыв.Первоначально это было на моем ноутбуке с приложением для разработки, работающим на каком-то высоком порту, и мой маршрутизатор перенаправлял этот порт на мой ноутбук.Я установил несколько приложений на других платформах (MacMini, RaspberryPI, Linux) и имел порт 80 nginx proxy_pass для этой платформы.На прошлой неделе я попытался упростить свой процесс и поместить все демонстрационные версии в MacMini, где я столкнулся с проблемами с некоторыми приложениями, не работающими в этом jQuery, которые не были найдены или загружены в некоторые демонстрационные версии, обычно те, которые имели Zurb Foundation.
Я не могу понять, в чем причина проблемы, и у меня есть пять кандидатов.
- Моя конфигурация nginx
- Среда разработки Rails
- МояФайлы манифеста JS / CSS
- Foundation
- Проблемы OSX spring / file_watcher
Для документирования этого у меня есть одно приложение (тот же код из git pull, изрядное количествоJS и просто немного базовых основ), работающих на трех платформах.MacMini работает 10.13.4 (высокая Сьерра, но я прошел 10.12.2 и 10.12.6 за последние несколько дней).MacBook Air работает 10.12.6.Расберрианская ОС (Debian 9), работающая в VirtualBox на MacMini.[foundation-rails (6.4.3.0), rails (5.1.6), jquery-rails (4.3.3)]
Базовая конфигурация nginx одинакова для всех трех, за исключением имени_сервера и номера порта.Я пробовал различные настройки, но ни одна из них не исправила мою проблему.
server {
server_name bingo2.mydomain.us;
location / {
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://10.0.1.104:8604/;
}
}
Мои файлы манифеста JS / CSS в настоящее время находятся ниже.Я перемещал вещи вокруг, пытаясь удостовериться, что у меня был правильный заказ и параметры, установленные для продавца.Для файла CSS я удалил запись require foundation_and_overides
, поскольку она находится в дереве и не имеет никакого эффекта, думаю, что она была оставлена от более старой версии Foundation.
// This is a JS manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
//= require rails-ujs
//= require jquery
//= require foundation
//= require_tree .
$(document).foundation();
/*
* This is a css manifest file that'll be compiled into application.css, which will include all the files
* listed below.
*
*= require_self
*= require foundation_and_overrides
*= require_tree .
*/
У меня изначально были приложенияработает в простой среде разработки, но обнаружил потенциальную ошибку (https://github.com/rails/rails/issues/26158), которая указывает на проблему с файловой системой OSX. Чтобы обойти эту проблему, нужно было удалить file_watcher, поэтому я создал «демонстрационную» среду, которая представляет собой просто среду разработки судалены гемы и конфиг наблюдателя файлов.
Я запускаю приложения с rails s -p 8604 -e demo -b 0.0.0.0 -d
и запускаю приложения с bingo{1,2}.mydomain.us.
В результате оба Mac отказывают из-за ошибок веб-консоли
[Error] Failed to load resource: The network connection was lost. (foundation_and_overrides.self-d1f959e72f9d5d6603cd707629d1e6b8df8a5731363c48252b8b10028591a11a.css, line 0)
[Error] ReferenceError: Can't find variable: jQuery
(anonymous function) (foundation.core.self-f3c7f9657e3fa857b22c08af6fe5c52df6f2ad4f5b85268319d47c1be483353d.js:74)
__webpack_require__ (foundation.core.self-f3c7f9657e3fa857b22c08af6fe5c52df6f2ad4f5b85268319d47c1be483353d.js:21)
...
Если я вычеркну nginx из уравнения и нажму на локальные порты напрямую (10.0.1.104:8604), все платформы будут работать (но вы когда-нибудь просили кого-нибудь, не имеющего технического опыта, взглянуть на что-то навеб-сайт, использующий порт # !, это сбивает их с толку, не говоря уже о том, что они хотят поставить www в URL)
Конечно, OSX кажется основной проблемойlem, но только с proxy_pass.
У кого-нибудь есть идеи или что-то отсутствует в моей настройке?Полагаю, я мог бы просто настроить промежуточные среды и развернуть приложения, но простое git push and pull кажется намного проще для того, что я хотел сделать.
Большинство похожих вопросов о том, что nginx не обслуживает JS, остаются без ответа или исправляется простая ошибка.