Laravel Homestead: 403 запрещено на nginx
Я только что установил Laravel Homestead в соответствии с их инструкциями. Когда я открываю http://homestead.app:8000, я получаю запрещенный HTTP-ответ nginx 403.
Я пробовал устанавливать права на приложение/хранилище на 755, но это не сработало, поэтому я перезагрузил Vagrant. Без дальнейших результатов.
Я также попытался изменить конфигурацию nginx, но без успеха.
Ответы
Ответ 1
У меня была та же проблема, и для меня причина в том, что в файле Homestead.yaml я неправильно поставил это:
sites:
- map: homestead.app
to: /home/vagrant/Code
Вместо правильного синтаксиса:
sites:
- map: homestead.app
to: /home/vagrant/Code/path/to/public
Ответ 2
Другая причина этого ответа может быть дублированием вашей маршрутизации с папками в общедоступном каталоге. Например, у вас может быть homestead.app/lists
GET
маршрут и lists
папка в каталоге /public
. Это приведет к той же ошибке 403 (сервер предположит, что вы пытаетесь получить доступ к каталогу /public/lists
вместо маршрута /lists
).
Ответ 3
Я ударился головой о стену, занимаясь этой самой проблемой, и я просто решил это для своего случая.
Я был уверен, что правильно настроил файл yaml, но я продолжал получать ошибку 403, и, экспериментируя с некоторыми маршрутами, я получал "входной файл не указан".
Мое решение появилось из http://laravel.com/docs/4.2/homestead, и оно включало использование команды serve. Я не добавлял никаких дополнительных сайтов, просто пытаюсь что-то сделать, чтобы первый сайт работал.
SSH'ing в мою бродячую коробку и используя команду "служить my_app_name.app/home/vagrant/Code/path/to/public" выполнил эту работу. Обратите внимание, что я уже вложил запись в мой файл hosts для этого приложения.
Надеюсь, это поможет кому-то.
Ответ 4
Для некоторых людей это может быть так же просто, как клонирование git в существующей общей папке, например:
- map: hello-world.dev
to: /home/vagrant/Code/Laravel/public/hello-world
Правильная структура папок:
- map: hello-world.dev
to: /home/vagrant/Code/hello-world/public
Еще одно замечание - игнорировать документы laravel при редактировании файлов hosts, используя git shell или cygwin (windows) для установки vagrant hostsupdater и просто добавляя записи для хостов и псевдонимов в файл ~/.homestead/Homestead.yaml.
Ответ 5
Я бы предложил проверить журналы nginx - используйте sudo tail /var/log/nginx/homestead.app-error.log
Ответ 6
Здесь полные шаги решения:
sites:
- map: homestead.app
to: /full/path/to/the/laravel-app/public
- run
homestead halt && homestead up --provision
Ответ 7
Хорошо, я получил ответ на question через несколько часов поиска и отладки.
Проблема:
- У меня есть маршрут GET /admin
- Также у меня есть папка /public/admin/ с активами внутри.
- И у меня есть отказ 403 от отказа nginx от этого дублирования;
Итак, если вы хотите переименовать папку маршрута или активов, все, что вам нужно сделать, это заменить
location / {
try_files $uri $uri/ /index.php?$query_string;
# ^^^^^
}
с этим:
location / {
try_files $uri /index.php?$query_string;
}
Если вы можете переименовать свою папку маршрутов или активов без какого-либо рефакторинга, тогда вы можете сделать это без фиксации конфигурации nginx.
Надеюсь, это будет полезно.
Ответ 8
Измените конфигурацию Nginx
Поместите эту строку в раздел "местоположение/":
try_files $uri $uri/public/index.php?$query_string;
Если его не работает, замените его "public" на имя папки, которое содержит "index.php",
Это отлично работало со мной, используя ServerPilot,
Удачи!
Ответ 9
Я столкнулся с этим, когда попытался вручную создать свой первый сайт. Ответ @GregD помог мне открыть проблему! Vagrant/Homestead/Laravel, как правило, получают все, что работает гладко, если вы используете встроенные функции.
Файл конфигурации Homestead поставляется предварительно сконфигурирован для одного сайта, расположенного в /Code/Laravel/
. Некоторые шаги, чтобы запустить этот тестовый стенд:
Это создаст ваш первый сайт с соответствующими разрешениями. Вы можете смоделировать будущие сайты после разрешений на этот или просто использовать "сайты" node Homestead.yaml
и laravel new <site>
для создания новых сайтов в будущем.
Ответ 10
В моем случае для целей тестирования у меня был только файл phpinfo.php в общедоступном каталоге. Сервер продолжал показывать 403 ошибки, пока я не поместил файл с именем index.php в общую папку!
Ответ 11
Доступ в вашем браузере
homestead.app/public
Перед установкой laravel/laravel с композитором в /home/vagrant/Code/Laravel/public
Ответ 12
В вашем случае вы получаете nginx 403 запрещенный ответ HTTP из-за неправильной конфигурации сайтов Homestead.yaml
,
если вы настроите его правильно, он должен работать.
Как решить проблему шаг за шагом:
1) Откройте свой бродячий бокс и создайте приложение laraval
$vagrant ssh
$cd ~/code
$#lets create basic blog
$laravel new blog
Crafting application...
Loading composer repositories with package information
........
$cd blog
$ll
# You should be able to see public folder in this dir.
# this is the entry point for your application.
# this is your public dir: ~/code/blog/public
# more explicitly: /home/vagrant/code/blog/public
$exit # exit ssh
2) Обновите Homestead.yaml с соответствующей информацией о сайте
- map: homestead.app
to: /home/vagrant/code/blog/public # should be same as in step1
3) Повторное предоставление вашего бродяги
$vagrant reload --provision
Теперь вы сможете получить доступ к нему, используя http://homestead.app
Спасибо!