3

私はnginxを初めて使用し、nginx構成が期待どおりに機能しない理由を特定できません。私がやりたいのは、すべての Web ルート (/) リクエストに対して、nginx が index.php よりも index.html を優先するようにすることだけです。

これは私のnginx構成です:

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
    worker_connections 768;
    multi_accept on;
}

http {
    ##
    # Basic Settings
    ##

    server {
        location / {
            index   index.html index.php;
        }

        location ~ \.php$ {
            fastcgi_pass  localhost:9000;
            fastcgi_param SCRIPT_FILENAME
                          $document_root$fastcgi_script_name;
            include       fastcgi_params;
        }
    }

    sendfile on;
    tcp_nopush on;
    tcp_nodelay off;
    keepalive_timeout 15;
    keepalive_requests 100000;
    types_hash_max_size 2048;
    client_body_in_file_only clean;
    client_body_buffer_size 32K;

    client_max_body_size 300M;
    server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ----------------- cut ---------------

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

私のエラーはどこですか?このnginx構成を記述する正しい方法は何ですか?

4

2 に答える 2

7

/index.html を明示的に要求した場合、それは提供されますか? そうでない場合は、明示的にブロックに追加することをお勧めしroot /path/to/root;ますserver {}。また、index.html に正しい権限があることを確認してください。

これはトラブルシューティングに役立ちます。ルートの index.html が見つからない場合は、強制的に 404 が返されます。その場合は、少なくともログをチェックして、探していたかどうかを確認できます。

location = / {
  index   index.html;
}

nginx -s reloadまた、設定を変更する場合は必ず行ってください。

于 2013-07-06T18:32:10.567 に答える
5

大会:

場所とサーバーの宣言は、仮想ホスト ファイル ( nginx conf からわかるように/etc/nginx/conf.d/*.conf;と) に保持する必要があります。/etc/nginx/sites-enabled/*;のファイル/etc/nginx/conf.d/*.conf;は通常、/etc/nginx/sites-enabled/*;「有効」にするためにファイルにシンボリックリンクされています

試してみるいくつかのこと

あなたの設定に似た私のブログ投稿を参照してください。

index index.html index.html index.phpfiles ディレクティブをlocation {}ブロックの外に移動してみてください

于 2013-07-07T23:12:29.263 に答える