Rewrite url via Nginx

Résolu/Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - Modifié le 20 févr. 2023 à 18:21
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 1 mars 2023 à 06:52

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 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 20 févr. 2023 à 18:37

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 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
25 févr. 2023 à 22:55

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 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
21 févr. 2023 à 14:10

 Pour le proxy path oui c'est normal.


0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
1 mars 2023 à 06:52

Merci.

La solution du / fonctionne dans mon cas.


0