somemo's diary

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【nginx】設定ファイルの編集【php】

php用に設定ファイルの編集を行います。

/etc/nginx/nginx.conf

nginxの基本となる設定ファイルです。内容を少し見ていきます。

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

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    # Load config files from the /etc/nginx/conf.d directory
    # The default server is in conf.d/default.conf
    include /etc/nginx/conf.d/*.conf;

}

mime一覧やログなどの定義が記述されています。また、最後には各種設定ファイルを読み込むようになっています。このファイルに書くのではなく、別ファイルに定義を書くようにしていきます。

mime一覧

各種設定ファイルを書く前に、/etc/nginx/mime.typesの内容を確認します。

types {
    text/html html htm shtml;
    text/css  css;
・・・
}

text系だけではなく、imageやapplicationなども多数定義されています。定義しか記述されていない、かつ別ファイルをincludeしていませんので、定義の追加はできません。他のファイルを使うのかもしれません。

各種設定ファイル

/etc/nginx/conf.d/php_fastcgi.confというファイルを作ってみました。

server {
    location ~ \.php$ {
        fastcgi_pass  127.0.0.1:9000;
        fastcgi_index index.php;
        include       /etc/nginx/fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

apacheを使ったことがあれば大体読み解いていくことができるのではないかと思います。

末尾が.phpであるリクエストは、ローカルホストの9000番ポートで処理します。つまりphp-fpmで処理することになります。処理するファイルは、ドキュメントルートに存在するファイル名となります。

fastcgi_params

以下のような内容になっています。

fastcgi_param  QUERY_STRING       $query_string;
fastcgi_param  REQUEST_METHOD     $request_method;
fastcgi_param  CONTENT_TYPE       $content_type;
fastcgi_param  CONTENT_LENGTH     $content_length;

fastcgi_param  SCRIPT_NAME        $fastcgi_script_name;
fastcgi_param  REQUEST_URI        $request_uri;
fastcgi_param  DOCUMENT_URI       $document_uri;
fastcgi_param  DOCUMENT_ROOT      $document_root;
fastcgi_param  SERVER_PROTOCOL    $server_protocol;

fastcgi_param  GATEWAY_INTERFACE  CGI/1.1;
fastcgi_param  SERVER_SOFTWARE    nginx/$nginx_version;

fastcgi_param  REMOTE_ADDR        $remote_addr;
fastcgi_param  REMOTE_PORT        $remote_port;
fastcgi_param  SERVER_ADDR        $server_addr;
fastcgi_param  SERVER_PORT        $server_port;
fastcgi_param  SERVER_NAME        $server_name;

# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param  REDIRECT_STATUS    200;