web-dev-qa-db-ja.com

403 nginx / 1.4.6(Ubuntu)で禁止-Laravel

403 Forbidden

enter image description here


私の設定:

/etc/nginx/sites-available/default

default

server {
        listen   80;


        root home/laravel-app/;

        index index.php index.html index.htm;

        server_name example.com;

        location / {
                try_files $uri $uri/ /index.html;
        }

        error_page 404 /404.html;

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
              root /usr/share/nginx/www;
        }

        # pass the PHP scripts to FastCGI server listening on the php-fpm socket
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;

        }

}

更新

私はこの指示に従いました: here


これに関するヒント/提案は大きな助けになります!

19
kyo

rootディレクティブの絶対パスを指定する必要があります。 Nginxは--prefixスイッチを使用してコンパイル時に設定されたディレクトリを使用します。デフォルトでは、これは/usr/local/nginxです。

これは、現在ルートhome/laravel-app/に設定されているルートにより、nginxが/usr/local/nginx/home/laravel-app/にあるファイルを検索することを意味します。

rootディレクティブを/var/www/laravel-app/public/などの絶対パスに設定すると、nginxはファイルを見つけます。

同様に、上記のパスに/public/を追加したことに注意してください。これは、Laravel=がそこにindex.phpファイルを格納しているためです。/laravel-app/を指していた場合、インデックスファイルはなく、403が得られます。

13
Ben Swinburne

pHPファイル(デフォルトファイル)のルールが必要です。

# pass the PHP scripts to FastCGI server listening on (...)
#
location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

        # With php5-cgi alone:
        #fastcgi_pass 127.0.0.1:9000;
        # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}
1
ali haider

アップデートで追加したエラーは、nginxがssc-portalフォルダーからディレクトリインデックスを試行していることを示しています。基本的なnginxインストールを使用しているように見えるため、ここでディレクトリインデックスが失敗する唯一の理由は、nginxがリストされたインデックスオプションを見つけることができない場合です。

サーバーブロックでは、ディレクトリリスト(末尾のスラッシュで終わるURI)が要求されたときに、index.php、index.html、index.htmの順に次の場所を試すようにnginxに指示しています。

これらのファイルが見つからない場合、ディレクトリインデックス要求は失敗します。

私の最善の推測は、index.phpファイルが間違った場所にあることです。 ssc-portalフォルダーから上に移動しましたか?

0
Trip