Nginx: Skillnad mellan sidversioner

Från MoodleDocs
Hoppa till:navigering, sök
(Fixed spellings)
(I don't believe cgi.fix_pathinfo=0 is necessary.)
Rad 8: Rad 8:


Nginx is usually configured to interface with PHP via [http://php.net/manual/en/install.fpm.php php-fpm]. This is both fast and robust.
Nginx is usually configured to interface with PHP via [http://php.net/manual/en/install.fpm.php php-fpm]. This is both fast and robust.
==== php.ini ====
Typically the php-fpm daemon with have it's own php.ini e.g. in debian it is /etc/php5/fpm/php.ini. The following setting is required,
'''php.ini'''
<pre>
cgi.fix_pathinfo=0
</pre>


=== Nginx ===
=== Nginx ===


====Slasharguments====
Add the following 'slash arguments' compatible (see [[Using slash arguments]]) 'location' block to your vhosts 'server' configuration in your nginx configuration.
Add the following 'slash arguments' compatible (see [[Using slash arguments]]) 'location' block to your vhosts 'server' configuration in your nginx configuration.


Rad 25: Rad 16:
<pre>
<pre>
location ~ [^/]\.php(/|$) {
location ~ [^/]\.php(/|$) {
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
     fastcgi_split_path_info  ^(.+\.php)(/.+)$;
     fastcgi_split_path_info  ^(.+\.php)(/.+)$;
     fastcgi_index            index.php;
     fastcgi_index            index.php;
Rad 32: Rad 22:
     fastcgi_param  PATH_INFO      $fastcgi_path_info;
     fastcgi_param  PATH_INFO      $fastcgi_path_info;
     fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
     fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
</pre>
</pre>


==== XSendfile aka X-Accel-Redirect ====
===== XSendfile aka X-Accel-Redirect =====


Setting Moodle and Nginx to use XSendfile functionality is a big win as it frees PHP from delivering files allowing Nginx to do what it does best, i.e. deliver files.  
Setting Moodle and Nginx to use XSendfile functionality is a big win as it frees PHP from delivering files allowing Nginx to do what it does best, i.e. deliver files.  

Versionen från 25 augusti 2015 kl. 13.53

Nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev. The nginx project started with a strong focus on high concurrency, high performance and low memory usage. It is licensed under the 2-clause BSD-like license and it runs on Linux, BSD variants, Mac OS X, Solaris, AIX, HP-UX, as well as on other *nix flavours. It also has a proof of concept port for Microsoft Windows.

The following is community-contributed documentation on Nginx configuration. Amendments and additions are welcome.

Nginx configuration

PHP-FPM

Nginx is usually configured to interface with PHP via php-fpm. This is both fast and robust.

Nginx

Add the following 'slash arguments' compatible (see Using slash arguments) 'location' block to your vhosts 'server' configuration in your nginx configuration.

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;
}
XSendfile aka X-Accel-Redirect

Setting Moodle and Nginx to use XSendfile functionality is a big win as it frees PHP from delivering files allowing Nginx to do what it does best, i.e. deliver files.

Enable xsendfile for Nginx in Moodles config.php, this is documented in the config-dist.php, a minimal configuration look like this,

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

Accompany this with a matching 'location' block in your nginx server configuration.

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

The definition of 'internal' here is important as it prevents client access to your dataroot.

See also