我正在尝试传递来自example.com/donor/2014/12/07/Name
另一台服务器上的地址的请求。
URI 就像/donor/2014/12/07/Mike
,我需要将它们转换为查询类型:/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://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;
}
答案1
你至少需要学习正则表达式编写和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://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;
}
如果有必要,您必须处理Location
标题重写proxy_redirect
。