У меня есть приложение SailsJS , которое я пытаюсь развернуть в Elastic Beanstalk, следуя инструкциям Amazon по NodeJS.
Мой сайт появляется, но на все запросы статических файлов (css, js, images) отвечают 404.
По-видимому, есть два способа сделать это:
1. Служите файлы с помощью SailsJS
npm start
, которая является моей командой для запуска сервера, обслуживает эти файлы локально, используя статическое промежуточное ПО Express, и это прекрасно работает на моем компьютере. На сервере эти запросы появляются в журнале доступа nginx, но они не доходят до моего приложения NodeJS. Куда они идут?
2. Служите файлам, используя прокси-сервер nginx
По умолчанию npm start
(или sails lift
) запускает любой сценарий, необходимый для перемещения статических файлов из assets
в .tmp/public
, откуда они и должны обслуживаться. Чтобы обслуживать эти файлы с помощью nginx в соответствии с руководством, мне нужно добавить их в файл .ebextensions/staticfiles.config
, который теперь выглядит следующим образом:
option_settings:
aws:elasticbeanstalk:container:nodejs:staticfiles:
/dependencies: /.tmp/public/dependencies
/docs: /.tmp/public/docs
/images: /.tmp/public/images
/js: /.tmp/public/js
/min: /.tmp/public/min
/favicon.ico: /.tmp/public/favicon.ico
Я пробовал:
- перемещение статических файлов из
.tmp/public
вstatic
потому что я думал, что скрытая папка.tmp
как-то недоступна для nginx - проверка в
static
папке, которая работает, но добавление ее в.gitignore
и удаление ее, кажется, приводит к тому, что это не работает.
Похоже, что nginx игнорирует файлы, созданные после запуска команды запуска NodeJS. Как я могу обслуживать мои автоматически сгенерированные статические файлы?