digitalocean - Laravel Homestead: 403 prohibido en nginx
laravel nginx windows (12)
Acceda a su navegador
homestead.app/public
Antes de la instalación de laravel / laravel con el compositor en / home / vagabundo / Code / Laravel / public
Acabo de instalar Laravel Homestead según sus instrucciones. Cuando abro http://homestead.app:8000 obtengo la respuesta HTTP prohibida nginx 403.
Intenté configurar permisos de aplicaciones / almacenamiento en 755, pero no funcionó, así que volví a cargar Vagrant. Sin más resultados.
También intenté cambiar la configuración de nginx, pero sin éxito.
Cambiar la configuración de Nginx
Pon esa línea en la sección ''ubicación /'':
try_files $uri $uri/public/index.php?$query_string;
Si no funciona, reemplace su ''público'' con el nombre de la carpeta que contiene ''index.php'',
Eso funcionó muy bien conmigo usando Server Pilot,
¡Buena suerte!.
En mi caso, para fines de prueba, solo tenía el archivo phpinfo.php en el directorio público . El servidor siguió mostrando 403 errores hasta que coloqué un archivo llamado index.php en la carpeta pública.
En su caso, está recibiendo nginx 403 la respuesta HTTP prohibida debido a la configuración incorrecta de los sitios en Homestead.yaml
, si lo configura correctamente, debería funcionar.
Cómo resolver el problema paso a paso:
1) Vaya a su caja vagabunda y cree la aplicación 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) Actualice Homestead.yaml con la información del sitio adecuada
- map: homestead.app
to: /home/vagrant/code/blog/public # should be same as in step1
3) Vuelva a aprovisionar a su vagabundo
$vagrant reload --provision
Debería poder acceder ahora usando http://homestead.app ¡ Gracias!
He estado golpeando mi cabeza contra la pared tratando con este mismo problema, y acabo de resolverlo para mi caso.
Estaba seguro de haber configurado el archivo yaml correctamente, pero seguí recibiendo el error 403, y al experimentar con algunas rutas recibí "archivo de entrada no especificado".
Mi solución vino de http://laravel.com/docs/4.2/homestead e involucraba el uso del comando servir. No agregaba sitios adicionales, solo intentaba hacer algo para que el primer sitio se ejecutara.
SSH''ing en mi caja vagabunda y usando el comando "serve my_app_name.app / home / vagrant / Code / path / to / public" hizo el trabajo. Tenga en cuenta que ya había puesto una entrada en mi archivo de hosts para esta aplicación.
Espero que esto ayude a alguien.
Me encontré con esto cuando intenté crear mi primer sitio manualmente. ¡La respuesta de @GregD me ayudó a descubrir el problema! Por lo general, Vagrant / Homestead / Laravel hará que todo funcione sin problemas si usa las funciones incorporadas.
El archivo de configuración de Homestead viene preconfigurado para un sitio, ubicado en /Code/Laravel/
. Algunos pasos para poner en funcionamiento este banco de pruebas:
- Instale Homestead (recuerde establecer su archivo hosts)
-
vagrant up
y conectarse a su máquina virtual a través de ssh ( Chrome Secure Shell es excelente si no tiene un terminal en su máquina) - Descargue y configure el paquete PHAR
-
cd ~/Code
-
laravel new Laravel
. - Vaya a http://homestead.app:8000
Esto creará su primer sitio con los permisos apropiados. Puede modelar futuros sitios después de los permisos de este, o simplemente usar el nodo "sitios" de Homestead.yaml
y laravel new <site>
para crear nuevos sitios en el futuro.
OK, recibí la respuesta a la question después de algunas horas de búsqueda y depuración.
El problema:
- Tengo GET route / admin
- También tengo / public / admin / folder con activos dentro.
- Y tengo 403 acceso denegado desde nginx causa de esta duplicación;
Por lo tanto, si no va a cambiar el nombre de la ruta o la carpeta de activos, todo lo que tiene que hacer es reemplazar
location / {
try_files $uri $uri/ /index.php?$query_string;
# ^^^^^
}
con este:
location / {
try_files $uri /index.php?$query_string;
}
Si pudiera cambiar el nombre de su ruta o carpeta de activos sin ningún refactor, podría hacerlo sin la configuración de nginx config.
Esperamos que esto sea útil.
Otra razón para esta respuesta puede ser la duplicación de su enrutamiento con carpetas en el directorio público. Por ejemplo, puede tener homestead.app/lists
GET
ruta y lists
carpetas en su directorio /public
. Esto causará el mismo error 403 (el servidor supondrá que está intentando acceder /public/lists
directory en lugar de su ruta /lists
).
Para algunas personas, esto puede ser tan simple como haber clonado git en una carpeta pública existente, por ejemplo:
- map: hello-world.dev
to: /home/vagrant/Code/Laravel/public/hello-world
La estructura correcta de la carpeta es:
- map: hello-world.dev
to: /home/vagrant/Code/hello-world/public
Otra buena nota es ignorar los documentos laravel en el archivo de hosts de edición, usando git shell, o cygwin (windows) para instalar hostsupdater vagabundos, y simplemente agregar entradas para hosts y alias al archivo ~ / .homestead / Homestead.yaml.
Sugeriría verificar los registros de nginx: use sudo tail /var/log/nginx/homestead.app-error.log
Tuve el mismo problema y, para mí, la causa fue que en el archivo Homestead.yaml, he escrito incorrectamente esto:
sites:
- map: homestead.app
to: /home/vagrant/Code
En lugar de la sintaxis correcta:
sites:
- map: homestead.app
to: /home/vagrant/Code/path/to/public
Aquí están los pasos completos de la solución:
ejecutar
homestead edit
agregar
/public
al final de su directorio
sites: - map: homestead.app to: /full/path/to/the/laravel-app/public
- ejecutar
homestead halt && homestead up --provision