Configuration complémentaire de nginx comme proxy pour site plone auto-hébergé

Bonjour à tous,

J’ai installé sur un même serveur physique un serveur Yunohost avec un certificat letsencrypt (port 80) et un site plone accessible en http sur le port 8081.

Ce site plone est servi par le serveur spécifique medusa, alors que Yunohost est servi par nginx (comme tout le monde le sait).

Pour accéder à la page de connexion de Yunohost, il est requis de taper dans le navigateur :

https://monnomdedomaine.fr

Pour accéder à la page de connexion de mon site plone, je tape :

http://monnomdedeomaine.fr:8081/monnomdesiteplone

Je souhaite maintenant passer par nginx pour servir mon site plone. Le serveur nginx servirait alors uniquement de proxy, redirigeant toutes les requêtes vers le serveur medusa, qui répondrait à la requête.

J’ai bien vu des choses sur internet, mais j’avoue ne rien y comprendre.

Si une bonne âme, charitable qui plus est, peut m’aider, je lui en serait très reconnaissant.

Pourquoi cette question ?

Pour plusieurs raisons :

Remarque 1 : je ne souhaite pas utiliser le système de connexion/authentification de Yunohost pour me connecter au site plone, qui contient sa propre page de connexion.

Remarque 2 : les sites que j’ai visités sont http://docs.plone.org/manage/deploying/front-end/nginx.html et Install Plone with Nginx on a Debian 8 VPS - RoseHosting , mais j’avoue ne pas comprendre comment modifier la config de nginx. Il semble que la config de medusa/plone ne doive pas être touchée …

Merci donc de vos réponses avisées.

Salut,

le plus simple est d’installer plone dans un conteneur my_webapp pour l’intégrer à Yunohost. Et le passer en public pour éviter l’authentification Yunohost.

Pour le reverse proxy, c’est très simple. Quelques exemples:


Salut Maniack_Crudelis,

Bien noté la possibilité d’installer plone dans un conteneur my_webapp.
L’avantage apparent est d’intégrer le site plone dans Yunohost.
Mais, comment faire quand le site existe déjà ?
En effet, il n’est pas question de tout recréer. Il y a tellement de choses à refaire (plugins, config, différents ajustements, des tonnes de données, …) que j’en aurais pour des jours et des jours, et je n’ai pas le temps.

Pour le proxy, tu dis que c’est simple, mais je ne sais même pas comment est architecturé nginx, et ce qu’il faut changer, ne pas changer, éviter de toucher … et les conséquences de chaque modification …
Je ne peux pas me permettre de rendre inaccessible à la fois Yunohost et le site plone.
Et j’avoue avoir peu de temps pour intégrer les subtilités de la configuration de nginx/SSOwat/Yunohost.

Il semble que le mieux serait d’utiliser un conteneur my_webapp, et le plus simple (quand on connaît les subtilités de nginx) serait de modifier la config du serveur.

Donc que faut-il faire ?

Ok, je comprend.

Je te suggère d’installer une webapp vide.


Celle ci te permettra de n’installer QUE le conteneur qui t’intéresse et rien d’autre (pas de ftp ou autre moyen d’accès).
Choisi le path et le label voulu pour Plone.

Lorsque l’installation sera terminée. Supprime le dossier /var/www/webapp_NOM_USER qui ne t’es pas utile.
Supprime également les fichiers /etc/php5/fpm/pool.d/plone.conf et /etc/php5/fpm/conf.d/20-plone.ini (selon le path choisi, ce sera peut-être pas “plone”). Ils ne serviront pas non plus.

Enfin, on va simplement modifier le fichier nginx correspond:
/etc/nginx/conf.d/monnomdedomaine.fr.d/plone.conf (nom du fichier dépendant de la même manière que précédemment.)

Je reprend l’exemple de Lutim (qui me semble proche)

location __PATH__ {
       if ($scheme = http) {
              rewrite ^ https://$server_name$request_uri? permanent;
       }
       location ~ [^/]\.php(/|$) {
        fastcgi_split_path_info ^(.+?\.php)(/.*)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param  REMOTE_USER $remote_user;
        fastcgi_param  PATH_INFO $fastcgi_path_info;
    }

    # Include SSOWAT user panel.
    include conf.d/yunohost_panel.conf.inc;

    error_log /var/log/nginx/plone.error.log;

    proxy_pass http://127.0.0.1:8081;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # We expect the downsteam servers to redirect to the right hostname, so don't do any rewrite$
    proxy_redirect     off;
}

__ PATH__ est à remplacer par /plone (toujours fonction du path choisi, que tu trouveras dans le fichier de conf nginx d’origine.)

Enfin
sudo service nginx reload
Et si tu as un problème au démarrage de nginx, regarde le log /var/log/nginx/error.log

Merci mille fois.

Je n’ai hélas pas le temps de tester cela maintenant.

Dès mon retour, je vais faire ce que tu décris. Je te tiens au courant.

Merci encore.

Pas de problème, mais j’attends avec impatience les résultats :wink:

Bonjour,
Je me permet de déterrer le sujet pour faire un retour : ça marche, merci !

Je voulais utiliser nginx comme proxy pour l’appli Web de beets. C’est une appli Flask qui marche sur http://127.0.0.1:8337/. J’ai suivi tes indications plus quelques conseils de l’appli, ce qui donne la conf nginx suivante:

location /beets {
    if ($scheme = http) {
            rewrite ^ https://$server_name$request_uri? permanent;
    }
    # Include SSOWAT user panel.
    include conf.d/yunohost_panel.conf.inc;

    error_log /var/log/nginx/beets.error.log;

    proxy_pass http://127.0.0.1:8337;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
    proxy_set_header X-Script-Name /beets;

    # We expect the downsteam servers to redirect to the right hostname, so don't do any rewrite$
    proxy_redirect     off;
}

Merci !

1 Like

Salut,

Merci pour ta réponse !
En complément, il existe désormais une application qui permet de faire exactement ça : https://github.com/YunoHost-Apps/redirect_ynh !

Salut, en effet l’App redirect_ynh permet d’automatiser toutes ces opérations, quitte à personnaliser les fichiers générés ensuite pour des cas très spécifiques.
Si jamais vous devez personnaliser vos fichiers, merci de les partager dans ce topic [Redirect_ynh] Share your case examples and config