Rewrite url via Nginx

Résolu
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -  
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   -

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.


4 réponses

mamiemando Messages postés 33784 Date d'inscription   Statut Modérateur Dernière intervention   7 885
 

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
avion-f16 Messages postés 19256 Date d'inscription   Statut Contributeur Dernière intervention   4 509
 

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
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   23
 

 Pour le proxy path oui c'est normal.


0
pcsystemd Messages postés 702 Date d'inscription   Statut Membre Dernière intervention   23
 

Merci.

La solution du / fonctionne dans mon cas.


0