Server Configuration

This section will go over a few basics of setting up your server for a Laravel application like PyroCMS.

NGINX Example

Below is an example NGINX configuration:

Notice: The web root should be set to your installation's public directory.
# --------------------------
#
# Redirect non-www > www
#
# --------------------------

server {
    listen      80;
    listen      443 ssl;
    server_name www.example.com;
    return 301 http://example.com$request_uri;
}

# --------------------------
#
# Redirect to HTTP > HTTPS
#
# --------------------------

#server {
#    listen      80;
#    server_name example.com www.example.com;
#    return      301 https://example.com$request_uri;
#}

server {
    listen      80;
    listen      443 ssl;

    server_name example.com;

    access_log /var/log/nginx/example.com_access_log combined;
    error_log /var/log/nginx/example.com_error_log error;

    index  index.php index.html;

    charset utf-8;

    root /var/www/vhosts/example.com/www.example.com/public;

    ssl_certificate      /var/www/vhosts/example.com/ssl/example.com.crt;
    ssl_certificate_key  /var/www/vhosts/example.com/ssl/example.com.key;

    gzip on;
    gzip_static on;
    gzip_http_version 1.0;
    gzip_disable "MSIE [1-6].";
    gzip_vary on;
    gzip_comp_level 9;
    gzip_proxied any;
    gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/svg+xml;

    fastcgi_intercept_errors off;
    fastcgi_buffers 8 16k;
    fastcgi_buffer_size 32k;
    fastcgi_read_timeout 180;

    # Remove trailing slashes
    rewrite ^/(.*)/$ /$1 permanent;

    expires $expires;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {

        fastcgi_pass unix:/var/run/php-fpm-default.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        include        fastcgi_params;
    }

    location ~ /\.ht {

        access_log off;
        log_not_found off;

        deny all;
    }

    location ~* \.ico$ {

        expires 1w;
        access_log off;
    }

    location ~* \.(?:jpg|jpeg|gif|png|ico|gz|svg|svgz|ttf|otf|woff|eot|mp4|ogg|ogv|webm)$ {

        try_files $uri $uri/ /index.php?$query_string;

        access_log off;
        log_not_found off;
    }

    location ~* \.(?:css|js)$ {

        try_files $uri $uri/ /index.php?$query_string;

        access_log off;
        log_not_found off;
    }

    add_header "X-UA-Compatible" "IE=Edge,chrome=1";
}