Rewrite url via Nginx

Résolu
pcsystemd Messages postés 734 Statut Membre -  
pcsystemd Messages postés 734 Statut Membre -

Bonjour,

Comment puis je  m'y prendre pour faire la réécriture d'url suivante :

https://dkxwm.site.net/1736/1/10562/0eb14-c61-497-a10-537d965e3.jpg

en :

https://www.monsite.fr/imgfinality/1736/1/10562/0eb14-c61-497-a10-537d965e3.jpg
  • Sachant que le début du remplacement est statique :
https://dkxwm.site.net/

en :

https://www.monsite.fr/imgfinality/

Sachant que le reste de l'URL est dynamique :

1736/1/10562/0eb14-c61-497-a10-537d965e3.jpg

J'aurais tendance à faire un truc de ce genre mais je suis pas certain.

location ~ /imgfinality/ {
       rewrite ^/imgfinality/(.*) /$1 break;
       proxy_pass https://dkxwm.site.net;
       proxy_set_header Host $proxy_host;
    }

Merci d'avance.


L'accès au savoir est la première liberté que chaque homme devrait avoir.

4 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    Bonjour,

    Ce que tu as commencé à écrire laisse entendre que ton serveur nginx fait office de reverse proxy. Est-ce normal ?

    Ce n'est pas ma spécialité (je n'utilise pas nginx) mais :

    • Si on redirige tout dkxwm.site.net, voir cette page :
    server {
        listen 80;
        listen 443 ssl;
        server_name dkxwm.site.net;
        return 301 $scheme://www.monsite.fr/imgfinality/$request_uri;
    }
    • Si on redirige uniquement une location vers un autre serveur, voir cette page :
    server{
        listen 80;
        listen 443 ssl;
        server_name dkxwm.site.net;
        location ~ .jpg {
            rewrite ^/(.*)$ https://www.mon-sites.com/imgfinality/$1 redirect;
        }
    }

    Bonne chance

    1
  2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     

    Bonjour,

    Voici ce que dit la documentation Nginx :


    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/;
    }
    

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

    Dans ton cas, il suffit d'ajouter un « / » à la fin (trailing slash) afin que la valeur soit considérée comme une URL et que la substitution se fasse. Ce qui rend ta règle de réécriture inutile.

    1
  3. pcsystemd Messages postés 734 Statut Membre 23
     

     Pour le proxy path oui c'est normal.


    0
  4. pcsystemd Messages postés 734 Statut Membre 23
     

    Merci.

    La solution du / fonctionne dans mon cas.


    0