Nginx反向代理基于请求的URL

时间:2019-01-27 17:32:31

标签: nginx reverse-proxy

我想将我的nginx配置为反向代理,这将允许我执行以下操作:

像这样的请求

test.xxx.dev.example.com-> xxx.domain.dev.example.com

test.yyy.dev.example.com-> yyy.domain.dev.example.com

我当前的配置:

include <time.h> 
include <stdio.h>
int main(){
    clock_t start = clock(); // Execuatable code
    clock_t stop = clock();
    double elapsed = (double)(stop - start) * 1000.0 / CLOCKS_PER_SEC;
    printf("Time elapsed in ms: %f", elapsed);
}

我遇到502错误。日志说:没有定义解析器来解析.domain.dev.example.com :(有帮助吗?

Edit1:添加解析器127.0.0.11(这是基于docker-compose的环境)时,错误“未定义解析器来解析...”消失,但出现了新错误:

.domain.dev.example.com无法解析,找不到主机。似乎由于某些原因,变量$ app没有传递给proxy_pass指令。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好吧,看来问题出在解析器和错误的正则表达式上。下面的配置按我的预期工作:

resolver 127.0.0.11;

server {
  listen 80;
  server_name ~^test\.(?<app>.+)\.dev\.example\.com$;
  location / {
    proxy_pass http://$app.domain.dev.example.com$url;
  }
}

@Richard,在我的正则表达式中,我在声明变量和值:)这是通过“?<'app>”完成的,其中app是变量名。

感谢所有提示和帮助!