我试图通过其他服务器上的地址example.com/donor/2014/12/07/Name传递请求。
URIs like /donor/2014/12/07/Mike /donor.php?yyyy=2014&mm=12&dd=07&donor=Name /donor/2014/12/07/Mike ,我需要将它们转换为查询types: /donor.php?yyyy=2014&mm=12&dd=07&donor=Name 。
我目前的设置是:
location ~* ^/donor/+$ { rewrite ^/(.*) /donor.php?yyyy=$1&mm=$2&dd=$3&donor=$4 break; proxy_pass http://XXXX; 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; }
您至less需要学习正则expression式写作和nginx请求处理的基础知识。
这比较合适:
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://XXXX; 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; }
如有必要,您必须使用proxy_redirect处理Location标头重写。