Skip to content

nginx configuration

bendem edited this page Oct 9, 2014 · 10 revisions

an example nginx configuration (thanks Mic92). See also this gist.

Please make sure all directories/files in public/ as well as data/favicons are readable to your web server.

If it still doesn't work look into your log files at /var/log/nginx/rss.error.log.

upstream backend {
    server unix:/var/run/php-fpm.sock;
}
server {
    listen [::]:80;
    listen [::]:443 ssl;
    server_name rss.yourdomain.com;
    root /var/www/selfoss/;
    access_log /var/log/nginx/rss.access.log;
    error_log /var/log/nginx/rss.error.log;
    location ~* \ (gif|jpg|png) {
        expires 30d;
    }
    location ~ ^/favicons/.*$ {
        try_files $uri /data/$uri;
    }
    location ~ ^/thumbnails/.*$ {
        try_files $uri /data/$uri;
    }
    location ~* ^/(data\/logs|data\/sqlite|config\.ini|\.ht) {
        deny all;
    }
    location / {
        index index.php index.html index.htm;
        try_files $uri /public/$uri /index.php$is_args$args;
    }
    location ~ \.php$ {
        fastcgi_pass backend;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        include fastcgi_params;
    }
}

As an alternative which denys more stuff by default, I used the following location block. selfoss is installed at /usr/share/webapps/selfoss

location /selfoss {
    root /usr/share/webapps;
    location ~ \.php$ {
        fastcgi_pass    unix:/var/run/php-fpm/php-fpm.sock;
        fastcgi_index   index.php;
        include         fastcgi.conf;
    }
    location ~ ^/selfoss/$ {
        index index.php;
    }
    location ~ ^/selfoss/favicons/(.+)$ {
        try_files /selfoss/data/favicons/$1 =404;
    }
    location ~ ^/selfoss/(.+)$ {
        try_files /selfoss/public/$1 /selfoss/index.php$is_args$args;
    }
}

If ever you use nginx as front-end and apache as back end, see this page.