0

I'm trying to pass requests from address example.com/donor/2014/12/07/Name on the other server.

URIs are like /donor/2014/12/07/Mike and I need to convert them to a query type of: /donor.php?yyyy=2014&mm=12&dd=07&donor=Name.

My current setup is :

location ~* ^/donor/+$ {    
    rewrite ^/(.*) /donor.php?yyyy=$1&mm=$2&dd=$3&donor=$4 break;
    proxy_pass http://X.X.X.X;
    proxy_redirect off;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
masegaloeh
  • 18,236
  • 10
  • 57
  • 106

1 Answers1

1

You need to at least learn the basics of regular expression writing and nginx request processing.

This is more appropriate :

location /donor/ {    
    rewrite ^/donor/(\d{4})/(\d{2})/(\d{2})/(\w+)$ /donor.php?yyyy=$1&mm=$2&dd=$3&donor=$4? break;
    proxy_pass http://X.X.X.X;
    proxy_redirect off;
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

You'll have to handle Location header rewrite with proxy_redirect if necessary.

Xavier Lucas
  • 13,095
  • 2
  • 44
  • 50