我使用 Nginx 作为代理服务器,并希望使用某些用户友好的带有参数的 url 来代理传递/重写到带有相应参数的另一个 url。
我期待这个网址: www.mydomain.com/report/bill/p1/p2/p3/p4 使用这个 http://192.168.0.1:9002/reports/servlet?param1=$p1¶m2=$p2¶m3=$p3¶m4=$p4
我尝试了以下方法,但没有成功
location /report/bill/ {
rewrite ^/report/bill/(.*)$ $1 break;
rewrite ^/report/bill/(.*)/(.*)$ $2 break;
rewrite ^/report/bill/(.*)/(.*)/(.*)$ $3 break;
rewrite ^/report/bill/(.*)/(.*)/(.*)$/(.*)$ $4 break;
proxy_pass http://192.168.0.1:9002/reports/servlet?param1=$1¶m2=$2¶m3=$3¶m4=$4;
}
您误解了
rewrite
的工作原理。
但是,
rewrite
能够在一个语句中完成您想要的所有操作:
rewrite ^/report/bill/(.*)/(.*)/(.*)/(.*)$ /reports/servlet?param1=$1¶m2=$2¶m3=$3¶m4=$4 break;
proxy_pass http://192.168.0.1:9002;
我可能不会使用
(.*)
进行捕获,因为它捕获包括 /
在内的所有内容。您可以使用 ([^/]+)
来捕获两个 /
之间的所有内容。