x602

  • Oct 26, 2022
  • Joined Oct 24, 2022
  • 已解决

        server {
            listen 80;
    
            location / {
                set $service  '';
                rewrite_by_lua '
                    local uri = ngx.var.uri
                    local m = ngx.re.match(uri, "^/(.+?)/(.*)$")
                    if m then
                        ngx.var.service = m[1] .. ":8081/" .. m[2]
                    end
                ';
                proxy_pass http://$service;
            }
        }
    • 请问 如何访问testser111.com/a111 和 testser111.com/b111 时 自动proxy_pass 到 http://a111:8081; 和 http://b111:8081;,a111 和 b111 是变量 可能还是其他的

      正常这样是可以的

              server {
                  listen 80;
              
                  location / {
                      set $service  '';
                      rewrite ^/a111/(.*)$ /$1 break;
                      proxy_pass http://a111:8081;
                  }
              }

      这是我尝试 改写的 lua 语法,但是有问题,哪位大佬可以帮忙根据上方的配置,将 <<a111>> 修改为lua的形式,设置为变量

              server {
                  listen 80;
      
                  location / {
                      set $service  '';
                      rewrite_by_lua '
                          local host = ngx.var.host
                          local m = ngx.re.match(host, "testser111.com")
                          if m then
                              ngx.var.service = m[1]
                          end
                          ngx.req.set_uri("a111/(.*)$ /$1", false)
                      ';
                      proxy_pass http://a111:8081;
                  }
              }