Table of Contents

,

Wordpress on nginx

Install packages

apt install nginx php-fpm php7.0-mysql

Config file example:

upstream php {
    server unix:/var/run/php/php7.0-fpm.sock;
}
 
server {
	listen 80 ;
	listen [::]:80 ;
	server_name example.com;
	return 301 https://$host$request_uri;
}
 
server {
	# SSL configuration
	#
	listen 443 ssl ;
	listen [::]:443 ssl ;
	ssl                     on;
	ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;
	ssl_session_cache       shared:SSL:10m;
	ssl_session_timeout     10m;
	ssl_prefer_server_ciphers on;
	ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA;
	ssl_certificate /etc/nginx/ssl/example.com.crt;
	ssl_certificate_key /etc/nginx/ssl/example.com.key;
 
	#
	# Note: You should disable gzip for SSL traffic.
	# See: https://bugs.debian.org/773332
	#
	# Read up on ssl_ciphers to ensure a secure configuration.
	# See: https://bugs.debian.org/765782
	#
	# Self signed certs generated by the ssl-cert package
	# Don't use them in a production server!
	#
	# include snippets/snakeoil.conf;
 
	root /var/www/example_site;
 
	# Add index.php to the list if you are using PHP
	index index.php;
 
	server_name example.com;
 
	location = /favicon.ico {
                log_not_found off;
                access_log off;
        }
 
	location = /robots.txt {
                allow all;
                log_not_found off;
                access_log off;
        }
 
	location / {
                # This is cool because no php is touched for static content.
                # include the "?$args" part so non-default permalinks doesn't break when using query string
                try_files $uri $uri/ /index.php?$args;
 
                # test if this line below works like stuff ("RewriteRule . /index.php [L]") in .htaccess file for wordpress, used in apache server
                #try_files $uri $uri/ /index.php;
        }
 
	location ~ \.php$ {
	       #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
	       include fastcgi.conf;
	       fastcgi_intercept_errors on;
	       fastcgi_pass php;
	       fastcgi_buffers 16 16k;
	       fastcgi_buffer_size 32k;
	}
 
	location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
	       expires max;
	       log_not_found off;
	}
 
 
}

Tested on

See also

References