簡體   English   中英

Laravel Homestead:在 nginx 上禁止 403

[英]Laravel Homestead: 403 forbidden on nginx

我只是按照他們的說明安裝了 Laravel Homestead。 當我打開http://homestead.app:8000 時,我得到了 nginx 403 forbidden HTTP Response。

我嘗試將應用程序/存儲權限設置為 755,但這不起作用,所以我重新加載了 Vagrant。 沒有進一步的結果。

我也嘗試更改 nginx 配置,但沒有成功。

我遇到了同樣的問題,對我來說,原因是在 Homestead.yaml 文件中,我錯誤地放置了這個:

sites:
- map: homestead.app
  to: /home/vagrant/Code

而不是正確的語法:

sites:
- map: homestead.app
  to: /home/vagrant/Code/path/to/public

此響應的另一個原因可能是使用公共目錄中的文件夾復制您的路由。 例如,您可能在/public目錄中有homestead.app/lists GET路由和lists文件夾。 這將導致相同的 403 錯誤(服務器將假定您正在嘗試訪問/public/lists目錄而不是/lists路由)。

在處理同樣的問題時,我一直在用頭撞牆,而我剛剛為我的案例解決了這個問題。

我確信我已經正確設置了 yaml 文件,但我一直收到 403 錯誤,並且在嘗試某些路由時,我收到“未指定輸入文件”。

我的解決方案來自http://laravel.com/docs/4.2/homestead ,它涉及使用 serve 命令。 我沒有添加任何額外的站點,只是想盡一切辦法讓第一個站點運行。

SSH 進入我的流浪箱並使用命令“serve my_app_name.app /home/vagrant/Code/path/to/public”完成了這項工作。 請注意,我已經在我的主機文件中為這個應用程序添加了一個條目。

希望這可以幫助某人。

OK,我得到答案的問題,搜索和調試的幾個小時后。

問題:

  1. 我有 GET 路由/admin
  2. 我還有/public/admin/文件夾,里面有資產。
  3. 並且我有 403 次訪問被 nginx 拒絕,原因是這種重復;

所以,如果你不想重命名路由或資產文件夾,你需要做的就是替換

location / {
    try_files $uri $uri/ /index.php?$query_string;
    #              ^^^^^
}

有了這個:

location / {
    try_files $uri /index.php?$query_string;
}

如果您可以在不進行任何重構的情況下重命名您的路由或資產文件夾,那么您可以在不修復 nginx 配置的情況下執行此操作。

希望這會有所幫助。

對於某些人來說,這可能就像在現有公共文件夾中克隆 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 文檔,使用 git shell 或 cygwin (windows) 安裝 vagrant hostsupdater,並簡單地將主機和別名的條目添加到 ~/.homestead/Homestead.yaml 文件。

我建議檢查 nginx 日志 - 使用sudo tail /var/log/nginx/homestead.app-error.log

以下是完整的解決步驟:

  1. 運行homestead edit

  2. /public添加到目錄的末尾

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

  1. 運行homestead halt && homestead up --provision

更改 Nginx 的配置

將該行放在“位置/”部分:

try_files $uri $uri/public/index.php?$query_string;

如果它不起作用,則將您的“public”替換為包含“index.php”的文件夾名稱,

使用 ServerPilot 對我來說效果很好,

祝你好運!。

就我而言,出於測試目的,我在公共目錄中只有 phpinfo.php 文件。 服務器一直顯示 403 錯誤,直到我將名為index.php的文件放入公共文件夾!

在您的情況下,由於Homestead.yaml站點配置不當,您會收到nginx 403 forbidden HTTP Response,如果配置正確,它應該可以工作。

如何逐步解決問題:

1) 進入你的 vagrant box 並創建 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訪問它了 謝謝!

在瀏覽器中訪問

homestead.app/public

/home/vagrant/Code/Laravel/public 中使用 composer 安裝 laravel/laravel 之前

配置 Nginx 站點:

站點: - 地圖:homestead.test 到:/home/vagrant/project1/public

要修復,請通過 ssh 進入您的宅基地,然后執行以下操作: nano /etc/nginx/sites-available/the-name-of-your-project.test

之后,您需要做的就是刪除您將在location對象中找到的$uri/ ,然后vagrant reload並修復錯誤。

Nginx 403 錯誤修復

當我嘗試手動創建我的第一個網站時遇到了這個問題。 @GregD 的回答幫助我發現了問題! 如果您使用內置功能,Vagrant/Homestead/Laravel 通常會讓一切都自己順利運行。

Homestead 的配置文件是為一個站點預先配置的,位於/Code/Laravel/ 啟動並運行此測試台的一些步驟:

  1. 安裝 Homestead (記得設置你的 hosts 文件)
  2. vagrant up並通過 ssh 連接到您的虛擬機(如果您的機器上還沒有終端, Chrome Secure Shell非常棒)
  3. 下載並設置PHAR 包
  4. cd ~/Code
  5. laravel new Laravel
  6. 瀏覽到http://homestead.app:8000

這將創建您的第一個具有適當權限的站點。 您可以根據此權限對未來的站點進行建模,或者僅使用Homestead.yaml的“站點”節點和laravel new <site>來創建新站點。

我的解決方案是將主機文件中的地址移動到文件底部。 它發生在我身上兩次。

在你的 vagrant 框中檢查 nginx 錯誤

無業游民ssh

須藤貓 var/log/nginx/yoursite.tld-error.log

"*1 FastCGI 在 stderr 中發送:"無法打開主腳本:/home/vagrant/code/public/index.php (No such file or directory)" "

Homestead.yaml 中的更改

納米宅基地.yaml

映射:homestead.app 到:/home/vagrant/code/Laravel/public

然后..

流浪者重新加載 --provision

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM