Skip to content

nginx configuration

DiscreteChan edited this page Jul 16, 2013 · 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;
            }
}