• # Normal

    Posté par . En réponse au message "Reverse proxy" avec nginx. Évalué à 4.

    http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

    If the proxy_pass directive is specified with a URI, then when a request is passed to the server, the part of a normalized request URI matching the location is replaced by a URI specified in the directive:
     location /name/ {
     proxy_pass http://127.0.0.1/remote/;
     }
    If proxy_pass is specified without a URI, the request URI is passed to the server in the same form as sent by a client when the original request is processed, or the full normalized request URI is passed when processing the changed URI:
     location /some/path/ {
     proxy_pass http://127.0.0.1;
     }
    

    Dans le premier cas, romu.fr/toto est passé à ton wallabag: localhost:4000/toto, ce qui fonctionne (si /toto est reconnu par wallabag, évidemment)

    Dans le second cas, romu.fr/wallabag/toto est passé ainsi: localhost:4000/wallabag/toto.

    Deux solutions :

    • soit wallabag a une option pour reconnaître qu’il est à l’intérieur d’un namespace (/wallabag), et tu dois le configurer
    • soit tu dis à nginx de transformer romu.fr/wallabag/toto en localhost:4000/toto. Ajouter juste un / à la fin de l’adresse du reverse proxy dans proxy_pass devrait suffire. Problème : si wallabag utilise des URL absolues (type <a href="/tata">), alors tous les liens vont péter, puisqu’au premier lien tu seras redirigé vers romu.fr/tata, qui ne sera pas reconnu comme faisant partie du namespace wallabag. Pour cette raison, faire du reverse proxying dans un namespace est considéré comme une mauvaise idée.

    À ta place je m’emmerderai pas et je prendrai un certificat letsencrypt pour wallabag.romu.fr.