Skip to content

Webserver configuration

Userli has to be installed like any other Symfony application.

Below, you'll find some example configurations for webservers. Don't blindly copy them, but adjust them to your needs.

Caddy

:8080
gzip
root /var/www/userli/public
# PHP-FPM Configuration
fastcgi / /run/php/php8.0-fpm.sock php
rewrite {
  to {path} /index.php?{query}
}

Nginx

server {
    listen  80;

    root /vagrant/public;
    index index.php;

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

    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        root /usr/share/nginx/www;
    }

    location ~ ^/index\.php(/|$) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
    }
}

Apache2

<VirtualHost *:80>

    ServerName users.example.org
    ServerAdmin admin@example.org
    RewriteEngine On
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [NE,R,L]

</VirtualHost>

<VirtualHost *:443>

    ServerName users.example.org
    ServerAdmin admin@example.org

    DocumentRoot /var/www/users.example.org/www/public

    <Directory /var/www/users.example.org/www/public>
        AllowOverride AuthConfig FileInfo Indexes Limit Options=ExecCGI,Includes,Indexes,SymLinksIfOwnerMatch,MultiViews
        Options -Indexes -MultiViews +SymLinksIfOwnerMatch

        LimitRequestBody 10485760

    </Directory>

    <Directory /var/www/users.example.org/www/public/.well-known>
        Require all granted
    </Directory>

    SetEnv APP_ENV prod

    <IfModule suexec_module>
        SuexecUserGroup userli userli
    </IfModule>

    <IfModule fcgid_module>
        AddHandler fcgid-script .php
        FCGIWrapper /var/www/users.example.org/php-fcgi/php-fcgi-starter .php

        IPCConnectTimeout 20
        IPCCommTimeout 60
        FcgidBusyTimeout 60
        MaxRequestLen 10485760

        <Directory /var/www/users.example.org/www/public>
            Options +ExecCGI
        </Directory>
    </IfModule>

    <IfModule mod_headers.c>
        Header add X-Content-Type-Options "nosniff"
        Header add X-XSS-Protection "1; mode=block"
        Header set Referrer-Policy "no-referrer"
        Header add X-Frame-Options "SAMEORIGIN"
    </IfModule>
    ErrorLog  "|/usr/bin/logger -t apache -p local0.error"

    Protocols h2 http/1.1

    SSLEngine On
    SSLCertificateFile /etc/letsencrypt/live/users.example.org/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/users.example.org/privkey.pem

    <IfModule mod_headers.c>
        Header always set Strict-Transport-Security: "max-age=31536000;includeSubdomains"
    </IfModule>

</VirtualHost>