Подтвердить что ты не робот

Laravel Homestead: 403 запрещено на nginx

Я только что установил Laravel Homestead в соответствии с их инструкциями. Когда я открываю http://homestead.app:8000, я получаю запрещенный HTTP-ответ nginx 403.

Я пробовал устанавливать права на приложение/хранилище на 755, но это не сработало, поэтому я перезагрузил Vagrant. Без дальнейших результатов.

Я также попытался изменить конфигурацию nginx, но без успеха.

4b9b3361

Ответ 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

Здесь полные шаги решения:

  • run homestead edit

  • добавить /public в конец вашего каталога

sites: - map: homestead.app to: /full/path/to/the/laravel-app/public

  1. 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 Спасибо!