今天接到了一个需求,将钉钉机器人通过内网域名做rewite配置,本来以为就是简单的rewrite。但是通过curl 怎么配置都是没有返回的。打开rewrite log ,也看到了rewrite的地址,以及参数是没有问题的。没有发现任何异常。之后用postman做测试的时候:提示:请用post方法请求。我明明是用的post请求的。为啥还提示这个。网上搜了一些资料。说post情况经过rewrite后,会变成get,请求体和请求参数都会被丢弃。
然后就又找了一些资料,找到了一个return 307的文档。
具体的配置:$args获取请求参数
server {
listen 18080;
server_name test.test.com;
location /xxxx/ {
#rewrite_log on;
#error_log logs/access_test_rewrite.log notice;
proxy_set_header Host $host;
return 307 https://oapi.dingtalk.com/robot/send?$args;
access_log logs/access.log main;
break;
}
}
这样通过postman或者curl也好。都是可以通过内网域名直接转发的。使用场景就是某些内部的服务器不能请求外网,可以通过这种方式做一个代理。