1. ホーム
  2. configuration

[解決済み】Nginx 403エラー:[folder]のディレクトリインデックスが禁止されています。

2022-04-04 19:12:18

質問

3つのドメイン名を持っており、Nginxを使って3つのサイトすべてを1つのサーバー(Digital Oceanのドロップレット)でホストしようとしています。

mysite1.name mysite2.name mysite3.name

そのうち1つだけが動作します。 他の2つは403エラーになります(同じように)。

nginxのエラーログを見ると。 [error] 13108#0: *1 directory index of "/usr/share/nginx/mysite2.name/live/" is forbidden .

私のサイト有効化コンフィグは

server {
        server_name www.mysite2.name;
        return 301 $scheme://mysite2.name$request_uri;
}
server {
        server_name     mysite2.name;

        root /usr/share/nginx/mysite2.name/live/;
        index index.html index.htm index.php;

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

        location ~ \.php$ {
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }
}

3サイトともほぼ同じ設定ファイルになっています。

各サイトのファイルは /usr/share/nginx/mysite1.name/someFolder のようなフォルダにあり、さらに /usr/share/nginx/mysite1.name/live はそれへのシンボリックリンクになっています。(mysite2やmysite3も同じ)。

を見てきました。 Nginx 403 すべてのファイルに対して禁止されている が、どうにもならない。

何が問題なのか、何か思い当たることはありますか?

どのように解決するのですか?

以下は、動作するコンフィグです。

server {
    server_name www.mysite2.name;
    return 301 $scheme://mysite2.name$request_uri;
}
server {
    #This config is based on https://github.com/daylerees/laravel-website-configs/blob/6db24701073dbe34d2d58fea3a3c6b3c0cd5685b/nginx.conf
    server_name mysite2.name;

     # The location of our project's public directory.
    root /usr/share/nginx/mysite2/live/public/;

     # Point index to the Laravel front controller.
    index           index.php;

    location / {
        # URLs to attempt, including pretty ones.
        try_files   $uri $uri/ /index.php?$query_string;
    }

    # Remove trailing slash to please routing system.
    if (!-d $request_filename) {
            rewrite     ^/(.+)/$ /$1 permanent;
    }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #   # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
    #   # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }

}

すると、ブラウザに出力されるのは、"Whoops, looks like something went wrong. "というLaravelのエラーだけでした。

実行しないでください chmod -R 777 app/storage ( 書簡 ) ワールドライト可能なものを作るのは、セキュリティ上よろしくない。

chmod -R 755 app/storage が動作し、より安全です。