Note: You are currently viewing documentation for Moodle 2.8. Up-to-date documentation for the latest stable version of Moodle may be available here: Nginx.

Nginx

From MoodleDocs
Revision as of 11:23, 27 March 2015 by Helen Foster (talk | contribs) (→‎Slasharguments: rewording with link to Using slash arguments)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 flavors. It also has a proof of concept port for Microsoft Windows.

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

Nginx configuration

FastCGI

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;

Slasharguments

The function slash arguments is required for various features in Moodle to work correctly, as described in Using slash arguments.

Slash arguments can be enabled by adding the following configuration to the nginx.conf:

nginx.conf location:

location ~ \.php(.*)$ {
include fastcgi_params;
fastcgi_index index.php;
if (!-e $request_filename) {
rewrite ^(.*\.php)(/)(.*)$ $1?file=/$3 last;
}
fastcgi_param SCRIPT_FILENAME /var/moodle_www/html$fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_read_timeout 250s;
}

See also