Rewrite url via Nginx

Résolu

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. Modérateur

    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
    1. 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
      1.  Pour le proxy path oui c'est normal.


        0
        1. Merci.

          La solution du / fonctionne dans mon cas.


          0