如何解决为Nginx prox_redirect使用脚本而不是正则表达式来修改Location标头
对于Nginx,proxy_redirect,我们可以使用字符串代替字符串或正则表达式吗?我需要使用proxy_redirect替换Location字符串中多次出现的文本,但我不确定如何使用正则表达式进行替换。因此,我正在检查proxy_redirect是否可以使我们编写脚本,那么这可能很容易。
解决方法
您可以在包含proxy_redirect
语句的单个块中使用多个proxy_pass
语句。 Nginx会按顺序评估包含正则表达式的语句,直到找到匹配项为止,因此,将较具体的正则表达式放在较不具体的正则表达式之前。
要替换3xx响应的Location
标头中的单个模式出现,请使用:
proxy_redirect ~^(.*)origin.example.com(.*)$ $1main.example.com$2;
要替换两次出现的相同模式,您将使用:
proxy_redirect ~^(.*)origin.example.com(.*)origin.example.com(.*)$ $1main.example.com$2main.example.com$3;
要替换一个,两个或三个相同模式的出现,您将使用:
proxy_redirect ~^(.*)origin.example.com(.*)origin.example.com(.*)origin.example.com(.*)$ $1main.example.com$2main.example.com$3main.example.com$4;
proxy_redirect ~^(.*)origin.example.com(.*)origin.example.com(.*)$ $1main.example.com$2main.example.com$3;
proxy_redirect ~^(.*)origin.example.com(.*)$ $1main.example.com$2;
使用~*
使正则表达式不区分大小写。有关详细信息,请参见this document。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。