Help us understand the problem. What is going on with this article?

Moodle 3.8 マニュアル - Nginx

原文

Nginx

Nginx [engine x] は Igor Sysoev 氏によって書かれた HTTP とメールプロキシサーバーのみならずリバースプロキシサーバーでもあります。nginx プロジェクトは高い同時並行性、高パフォーマンスそして低メモリ使用量に焦点をあててスタートしました。The 2-Clause BSD License の元でライセンスされ Linux、*nix フレーバー上でのみならず様々な BSD Mac OS X、Solaris、AIX、HP-UX 上で動作します。Microsoft Windows への移植のための概念実証もあります。

次はコミュニティの貢献による Nginx の設定についての文書です。修正や追加は歓迎です。

内容

1 Nginx の設定
1.1 PHP-FPM
1.2 Nginx
1.2.1 X-Accel-Redirect として知られる XSendfile
2 関連項目

1 Nginx の設定

1.1 PHP-FPM

Nginx は通常は php-fpm を経由して PHP のインタフェースにより設定されます。これは速く堅牢です。

証明のための PHPーFPM のデフォルトの動作は通常特別な拡張子でのスクリプトの実行に限定されます、一例は php です。この挙動は特別なパッケージ/ディストリビューション中で設定されることを確実にしてください、debian の一例をあげれば、

/etc/php5/fpm/pool.d/www.conf

security.limit_extensions = .php

12 Nginx

あなたの vhosts 'server' の nginx 設定に次の 'slash arguments' 互換の 'location' ブロックを追加して(さらなる説明は 'Using slash arguments' にあります)ください。

nginx.conf の location:

location ~ [^/]\.php(/|$) {
    fastcgi_split_path_info  ^(.+\.php)(/.+)$;
    fastcgi_index            index.php;
    fastcgi_pass             127.0.0.1:9000 (or your php-fpm socket);
    include                  fastcgi_params;
    fastcgi_param   PATH_INFO       $fastcgi_path_info;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

もし上記で動作しない場合は次を試してください。注:これは CentOS 7.6 (1804), MariaDB 10.3, Nginx 1.15 と PHP 7.3.5 用でした。

location ~ ^(.+\.php)(.*)$ {
    root /usr/share/nginx/html/moodle/;
    fastcgi_split_path_info  ^(.+\.php)(.*)$;
    fastcgi_index            index.php;
    fastcgi_pass             127.0.0.1:9000;
    include /etc/nginx/mime.types;
    include                  fastcgi_params;
    fastcgi_param   PATH_INFO       $fastcgi_path_info;
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

もしこれで動作しない(スクリプト、スタイル、イメージがロードしない)場合で open() "..." failed (20: Not a directory) があなたのログに出力する場合は、このブロックの前にスタティックコンテントに関連するディレクティブがないかチェックしそれらをこのブロックの後で除いてみてください。

1.2.1 X-Accel-Redirect として知られる XSendfile

Moodle と Nginx を XSendfile 機能を使用するように設定することは ファイルを配布することを Nginx に許可することで PHP からそれ、すなわちファイルの配布を解放することになるので大きな勝利です。

Nginx のためにモジュール config.php で xsendfile を有効にすることは、config-dist.php においてドキュメント化されていますが、最低限の設定は以下のようになります。

$CFG->xsendfile = 'X-Accel-Redirect';
$CFG->xsendfilealiases = array(
    '/dataroot/' => $CFG->dataroot
);

これが nginx サーバー設定の 'localtion' ブロックにマッチすることにともなって、

location /dataroot/ {
    internal;
    alias <full_moodledata_path>; # ensure the path ends with /
}

ここの 'internal' 設定はあなたの dataroot へのクライアントからのアクセスを防ぐために重要です。

2 関連項目

Real PATH_INFO support:
https://moodle.org/mod/forum/discuss.php?d=278916
https://moodle.org/mod/forum/discuss.php?d=307388
[非推奨] Internal rewriting to the HTTP GET file parameter:
https://moodle.org/mod/forum/discuss.php?d=83445

カテゴリ:インストール
メインページ

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした