doc: Add nginx configuration
authorBenjamin Franzke <bfr@qbus.de>
Thu, 24 Dec 2015 19:07:30 +0000 (20:07 +0100)
committerTim Lochm├╝ller <tim@fruit-lab.de>
Tue, 29 Dec 2015 09:12:38 +0000 (10:12 +0100)
Documentation/Configuration/Index.rst
Documentation/Configuration/Nginx.rst [new file with mode: 0644]
Resources/Private/Templates/Htaccess.html

index b94c452..dc265f5 100644 (file)
@@ -11,4 +11,5 @@ I recommend to use two browsers when testing this extension. One for browsing th
 
        PageConfiguration
        Global
-       Htaccess
\ No newline at end of file
+       Htaccess
+       Nginx
\ No newline at end of file
diff --git a/Documentation/Configuration/Nginx.rst b/Documentation/Configuration/Nginx.rst
new file mode 100644 (file)
index 0000000..1fb88e0
--- /dev/null
@@ -0,0 +1,76 @@
+Nginx configuration
+^^^^^^^^^^^^^^^^^^^
+
+*Configuration file changes*
+
+This configuration example adds a named location_ called @sfc which replaces the usual invocation of TYPO3's index.php.
+The @sfc location_ includes all checks necessary to decide whether the current request can be handled with
+a static file or needs to be directed to TYPO3.
+If all checks pass, the try_files_ directive is used to find the files in
+typo3temp/tx_ncstaticfilecache/ and if unavailable, redirect to index.php.
+
+In your nginx configuration you need to replace your '/' location, which probably looks like the following:
+
+.. code-block:: nginx
+
+   location / {
+       try_files $uri $uri/ /index.php$is_args$args;
+   }
+
+By the following configuration:
+
+.. code-block:: nginx
+
+   location / {
+       try_files $uri $uri/ @sfc;
+   }
+
+   # Special root site case. prevent "try_files $uri/" + "index" from skipping the cache
+   # by accessing /index.php directly
+   location =/ {
+       recursive_error_pages on;
+       error_page 405 = @sfc;
+       return 405;
+   }
+
+   location @sfc {
+       # Perform an internal redirect to TYPO3 if any of the required
+       # conditions for static file cache don't match
+       error_page 405 = /index.php$is_args$args;
+
+       # Query String needs to be empty
+       if ($args != '') {
+           return 405;
+       }
+
+       # We can't serve static files for logged-in BE/FE users
+       if ($cookie_nc_staticfilecache = 'fe_typo_user_logged_in') {
+           return 405;
+       }
+       if ($cookie_be_typo_user != '') {
+           return 405;
+       }
+
+       # Ensure we redirect to TYPO3 for non GET/HEAD requests
+       if ($request_method !~ ^(GET|HEAD)$ ) {
+           return 405;
+       }
+
+       charset utf8;
+       try_files /typo3temp/tx_ncstaticfilecache/${scheme}/${host}${uri}/index.html
+             /typo3temp/tx_ncstaticfilecache/${scheme}/${host}${uri}
+             =405;
+   }
+
+   location /typo3temp/tx_ncstaticfilecache {
+       deny all;
+   }
+
+*Extension configuration*
+
+Nginx does not interpret .htaccess files, therefore you may want to disable the
+sendCacheControlHeader and sendCacheControlHeaderRedirectAfterCacheTimeout
+options to prevent .htaccess generation.
+
+.. _location: http://nginx.org/en/docs/http/ngx_http_core_module.html#location
+.. _try_files: http://nginx.org/en/docs/http/ngx_http_core_module.html#try_files
index 6944bae..f5907de 100644 (file)
@@ -10,4 +10,4 @@
        RewriteCond %<![CDATA[{TIME}]]> ><f:format.date format="YmdHis">@{expires}</f:format.date>
        RewriteRule ^.*$ /index.php
 </IfModule>
-</f:if>
\ No newline at end of file
+</f:if>