===== Simple configuración de Nginx para DokuWiki ===== **Versión Nginx**: 1.2.1\\ **Versión Dokuwiki**: 2014-05-05a "Ponder Stibbons" ==== La configuración de Nginx cubre estos factores ==== * Cache de contenido estático. * Denegación de acceso a determinados directorios y ficheros //.htaccess//. * URL Canónica. * Soporte para PHP. * Redirección de errores a un html personalizado. * Bloqueo de determinadas IPs, redes, referencias, User-agents, etc ([[bloquear_ip_user_agent_y_geo_en_nginx| Leer]]). * Rutas de los ficheros logs. * Friendly URLs (Equivalente a mod_rewrite). ==== Ejemplo de fichero de configuración ==== server { server_name dominio.com www.dominio.com; ############### URL Canónica if ( $host != 'www.dominio.com' ) { rewrite ^/(.*)$ http://www.dominio.com/$1 permanent; } listen 80; autoindex off; client_max_body_size 15M; client_body_buffer_size 128k; index index.html index.htm index.php doku.php; ############### Logs access_log /var/log/nginx/dominio.com/access.log; error_log /var/log/nginx/dominio.com/error.log; root /usr/share/nginx/www/dominio; ############### Page Errors error_page 500 502 503 504 404 403 /404.html; include /etc/nginx/block.conf; location = /404.html { root /usr/share/nginx/www/dominio/error; allow all; } location / { try_files $uri $uri/ @dokuwiki; } ############### Contenido estático (Proxy cache) location ~ ^/lib.*\.(gif|png|ico|jpg|css|js)$ { expires 31536000s; add_header Pragma "public"; add_header Cache-Control "max-age=31536000, public, must-revalidate, proxy-revalidate"; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } location ~ /\. { access_log off; log_not_found off; deny all; } location ~ ~$ { access_log off; log_not_found off; deny all; } ############### URL amigables. location @dokuwiki { rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last; rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last; rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; rewrite ^/(.*) /doku.php?id=$1 last; } ############### Soporte para php CGI location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/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_intercept_errors on; fastcgi_ignore_client_abort off; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_param PATH_INFO $uri; } ############### Denegación de acceso. location ~ /(data|conf|bin|inc)/ { deny all; } location ~ /\.ht { deny all; } } service nginx restart **Problema al visualizar imágenes en Dokuwiki con Nginx** En la web de dokuwiki se propone una configuración de Dokuwiki en Nginx con unas directivas que impiden la visualización de imágenes en los artículos. Para solventarlo vale con comentar / eliminar las siguientes lineas. El código puede variar pero se debe identificar fácilmente si nos basamos en el ejemplo. location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ { access_log off; log_not_found off; expires 360d; }