Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Standalone configuration route match regex support #1087

Open
jmprusi opened this issue Jul 4, 2019 · 2 comments
Open

Standalone configuration route match regex support #1087

jmprusi opened this issue Jul 4, 2019 · 2 comments

Comments

@jmprusi
Copy link
Contributor

jmprusi commented Jul 4, 2019

Standalone configuration route match doesn't support to specify a regex.

Version
nginx version: openresty/1.15.8.1
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.1.0h  27 Mar 2018
TLS SNI support enabled
configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt='-O2 -DNGX_LUA_ABORT_AT_PANIC -I/usr/local/openresty/zlib/include -I/usr/local/openresty/pcre/include -I/usr/local/openresty/openssl/include' --add-module=../ngx_devel_kit-0.3.1rc1 --add-module=../echo-nginx-module-0.61 --add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 --add-module=../set-misc-nginx-module-0.32 --add-module=../form-input-nginx-module-0.12 --add-module=../encrypted-session-nginx-module-0.08 --add-module=../srcache-nginx-module-0.31 --add-module=../ngx_lua-0.10.15 --add-module=../ngx_lua_upstream-0.07 --add-module=../headers-more-nginx-module-0.33 --add-module=../array-var-nginx-module-0.05 --add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 --add-module=../redis-nginx-module-0.3.7 --add-module=../ngx_stream_lua-0.0.7 --with-ld-opt='-Wl,-rpath,/usr/local/openresty/luajit/lib -L/usr/local/openresty/zlib/lib -L/usr/local/openresty/pcre/lib -L/usr/local/openresty/openssl/lib -Wl,-rpath,/usr/local/openresty/zlib/lib:/usr/local/openresty/pcre/lib:/usr/local/openresty/openssl/lib' --with-pcre-jit --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-http_v2_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --with-http_stub_status_module --with-http_realip_module --with-http_addition_module --with-http_auth_request_module --with-http_secure_link_module --with-http_random_index_module --with-http_gzip_static_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-threads --with-dtrace-probes --with-stream --with-stream_ssl_preread_module --with-http_ssl_module
Steps To Reproduce
  1. Start apicast with this config:
{
  "global": {
    "log_level": "notice",
    "error_log": "/dev/stderr",
    "access_log": "/dev/stdout"
  },
  "server": {
    "listen": [
      {
        "port": 8080,
        "name": "default",
        "protocol": "http"
      },
      {
        "port": 8090,
        "name": "management",
        "protocol": "http"
      }
    ]
  },
  "routes": [
    {
      "name": "get-root",
      "match": {
        "uri_path": "/*",
        "http_method": "GET"
      },
      "destination": {
        "service": "testapi"
      }
    },
    {
      "name": "management",
      "match": {
        "server_port": "management"
      },
      "destination": {
        "service": "management"
      }
    }
  ],
  "internal": [
    {
      "name": "testapi",
      "policy_chain": [],
      "upstream": "http://echo-api.3scale.net:80"
    },
    {
      "name": "management",
      "policy_chain": [
        {
          "policy": "apicast.policy.management"
        }
      ]
    }
  ],
  "external": []
}
  1. curl -X GET localhost:8080/test
Current Result

APIcast returns 404

but curl -X GET 'localhost:8080/*' outputs echo-api.3scale.net response.

Expected Result

The output of the echo-api.3scale.net upstream.

@davidor
Copy link
Contributor

davidor commented Jul 9, 2019

The code always compares what's in match.uri_path with the request path using ==.

@jmprusi , @mikz Should we always interpret match.uri_path as a regex and check if it matches the path? Not sure if you want to do that or introduce things like starts_with, matches_exactly, etc. Do you have a spec in Ostia that defines this?

@mikz
Copy link
Contributor

mikz commented Jul 9, 2019

I think it should not be a regex by default. That would force everyone to write regexes or we would need to do transformations. I think we first need to define how this is supposed to work exactly in Ostia and then write a proposal for the standalone config. I don't feel there is anything to be done right now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants