YesWiki / yeswiki

YesWiki is a wiki system written in PHP, including extensions making collaboration more simple (databases, maps, easy editing, bootstrap themes,...).
https://yeswiki.net
GNU Affero General Public License v3.0
107 stars 55 forks source link

Mise à jour de la documentation, configuration de référence pour nginx #1209

Open Sekiltoyai opened 2 hours ago

Sekiltoyai commented 2 hours ago

Description

La documentation ne fournit pas de configuration détaillée pour nginx. Afin de faciliter l'adoption de Yeswiki, je pense qu'il serait utile de mettre à jour la documentation avec des configurations de référence.

Après des tests basiques, j'ai élaboré des configurations pour les cas suivants :

Dans la mesure où je suis actuellement en phase de test, yeswiki n'est pas installé à la racine du domaine. Si mes tests sont concluants, je déploierai à la racine du domaine et je serai en mesure de fournir les configurations pour ces cas là.

Base URL de la forme 'https://www.example.net/test-yeswiki/?'

        location /test-yeswiki/ {
                alias /var/www/yeswiki/;
                try_files $uri $uri/ index.php;

                location ~* /(.*/)?private/ {
                        deny all;
                        return 403;
                }

                location ~ ^(.+\.php)(.*)$ {
                        fastcgi_split_path_info ^(.+\.php)(.+)$;
                        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
                        fastcgi_index index.php;
                        include fastcgi_params;
                        fastcgi_param SCRIPT_FILENAME $request_filename;
                        fastcgi_param PATH_INFO $fastcgi_path_info;
                        fastcgi_buffer_size 16k;
                        fastcgi_buffers 4 16k;
                }
        }

Base URL de la forme 'https://www.example.net/test-yeswiki/'

    location /test-yeswiki/ {
        alias /var/www/yeswiki/;
        try_files $uri $uri/ index.php;

        location ~* /(.*/)?private/ {
            deny all;
            return 403;
        }

        location ~ ^/test-yeswiki/(?!(actions/|cache/|custom/|docs/|files/|formatters/|handlers/|javascripts/|styles/|themes/|tools/|vendor/|index.php)) {
            rewrite ^/(.*) /test-yeswiki/index.php?$1;
        }

        location ~ ^(.+\.php)(.*)$ {
            fastcgi_split_path_info ^(.+\.php)(.+)$;
            fastcgi_pass unix:/run/php/php8.2-fpm.sock;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $request_filename;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_buffer_size 16k;
            fastcgi_buffers 4 16k;
        }
    }

Note : Pour cette seconde configuration, on utilise une règle de réécriture :

En d'autres termes, dans cette configuration, il n'est pas possible de créer une page s'appelant "vendor" ou "actions" par exemple. Ne connaissant pas suffisamment yeswiki, j'ai mis tous les dossiers qui semblaient être susceptibles de recevoir des requêtes HTTP. Si on me donne une liste plus précise, je peux mettre à jour la configuration.

Afin de vérifier que la configuration était fonctionnelle, j'ai réalisé les tests suivants :

Additionnal informations / Informations complémentaires

mrflos commented 2 hours ago

Il y a une config nginx disponible dans la partie docker du code https://github.com/YesWiki/yeswiki/blob/doryphore-dev/docker/nginx.conf qui arrive a gérer la présence ou non de ? sans faire de tests sur tous les dossiers a la racine de YesWiki, je laisse l'issue ouverte afin d'y faire référence dans la doc a l'occasion. Merci du retour