You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by GitBox <gi...@apache.org> on 2022/01/14 03:08:16 UTC

[GitHub] [apisix] tzssangglass opened a new issue #6095: bug: unknown proxy_mirror exception

tzssangglass opened a new issue #6095:
URL: https://github.com/apache/apisix/issues/6095


   ### Issue description
   
   When I tested APISIX, I found that under special conditions apisix would give me mirror-related errors even if I did not use the proxy mirror plugin.
   
   ### Environment
   
   - apisix version (cmd: `apisix version`):master
   - OS (cmd: `uname -a`):macos /centos7.9
   - OpenResty / Nginx version (cmd: `nginx -V` or `openresty -V`):
   
   ```
   nginx version: openresty/1.19.9.1
   built by clang 12.0.5 (clang-1205.0.22.11)
   built with OpenSSL 1.1.1l  24 Aug 2021
   TLS SNI support enabled
   configure arguments: --prefix=/usr/local/Cellar/openresty-debug/nginx --with-debug --with-cc-opt='-DNGX_LUA_USE_ASSERT -DNGX_LUA_ABORT_AT_PANIC -O2 -DAPISIX_BASE_VER=0.0.0 -DNGX_LUA_ABORT_AT_PANIC -I/usr/local/Cellar/zlib/1.2.11/include -I/usr/local/Cellar/pcre/8.45/include -I/usr/local/Cellar/openresty-openssl111/1.1.1l_1/include' --add-module=../ngx_devel_kit-0.3.1 --add-module=../echo-nginx-module-0.62 --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.32 --add-module=../ngx_lua-0.10.20 --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.10 --with-ld-opt=
 '-Wl,-rpath,/usr/local/Cellar/openresty-debug/luajit/lib -Wl,-rpath,/usr/local/Cellar/openresty-debug/wasmtime-c-api/lib -L/usr/local/Cellar/zlib/1.2.11/lib -L/usr/local/Cellar/pcre/8.45/lib -L/usr/local/Cellar/openresty-openssl111/1.1.1l_1/lib -Wl,-rpath,/usr/local/Cellar/zlib/1.2.11/lib:/usr/local/Cellar/pcre/8.45/lib:/usr/local/Cellar/openresty-openssl111/1.1.1l_1/lib' --add-module=/private/var/folders/d2/kfkndm417kv5mmlgvk1_xb8r0000gn/T/tmp.6Uimr4Zn/openresty-1.19.9.1/../mod_dubbo --add-module=/private/var/folders/d2/kfkndm417kv5mmlgvk1_xb8r0000gn/T/tmp.6Uimr4Zn/openresty-1.19.9.1/../ngx_multi_upstream_module --add-module=/private/var/folders/d2/kfkndm417kv5mmlgvk1_xb8r0000gn/T/tmp.6Uimr4Zn/openresty-1.19.9.1/../apisix-nginx-module --add-module=/private/var/folders/d2/kfkndm417kv5mmlgvk1_xb8r0000gn/T/tmp.6Uimr4Zn/openresty-1.19.9.1/../apisix-nginx-module/src/stream --add-module=/private/var/folders/d2/kfkndm417kv5mmlgvk1_xb8r0000gn/T/tmp.6Uimr4Zn/openresty-1.19.9.1/../wasm-nginx
 -module --add-module=/private/var/folders/d2/kfkndm417kv5mmlgvk1_xb8r0000gn/T/tmp.6Uimr4Zn/openresty-1.19.9.1/../lua-var-nginx-module --with-poll_module --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-compat --with-stream --with-http_ssl_module
   ```
   
   - etcd version, if have (cmd: run `curl http://127.0.0.1:9090/v1/server_info` to get the info from server-info API): `etcd Version: 3.5.0`
   - apisix-dashboard version, if have:
   - the plugin runner version, if the issue is about a plugin runner (cmd: depended on the kind of runner):
   - luarocks version, if the issue is about installation (cmd: `luarocks --version`): `luarocks 3.7.0`
   
   
   ### Steps to reproduce
   
   1. set `config.yaml` as
   
   ```yaml
   apisix:
     admin_key:
       - name: admin
         key: edd1c9f034335f136f87ad84b625c8f1  # using fixed API token has security risk, please update it when you deploy to production environment
         role: admin
   nginx_config:
     http:
       enable_access_log: false
   ```
   
   2. add prometheus plugin to global_rule
   
   ```
   curl -i http://127.0.0.1:9080/apisix/admin/global_rules/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
   {
       "plugins": {
           "prometheus": {}
       }
   }'
   ```
   
   3. add route
   
   ```
   curl -i http://127.0.0.1:9080/apisix/admin/routes/1  -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
   {
       "upstream": {
           "nodes": {
               "127.0.0.1:1980": 1
           },
           "type": "roundrobin"
       },
       "uri": "/hello"
   }'
   ```
   
   4. test routs
   
   ```
   curl http://127.0.0.1:9080/hello
   ```
   
   ### Actual result
   
   The request is proxied correctly, but there is an error reported in  `logs/error.log` .
   
   ### Error log
   
   ```
   2022/01/14 10:55:14 [error] 50660#29698657: *971 invalid URL prefix in "/hello", client: 127.0.0.1, server: _, request: "GET /hello HTTP/1.1", subrequest: "/proxy_mirror", host: "127.0.0.1:9080"
   ```
   
   ### Expected result
   
   It shouldn't be reporting this error because I don't have the proxy-mirror plugin enabled.
   
   
   When I disable proxy-mirror in `config.yaml`, the error does not exist.
   
   I was unable to reproduce the test case with the following test case and it looks like there is a difference between the test case and the runtime.
   
   ```
   use t::APISIX 'no_plan';
   
   repeat_each(1);
   no_long_string();
   no_root_location();
   
   add_block_preprocessor(sub {
       my ($block) = @_;
   
       if (!$block->request) {
           $block->set_value("request", "GET /t");
       }
   
       if ((!defined $block->error_log) && (!defined $block->no_error_log)) {
           $block->set_value("no_error_log", "[error]");
       }
   });
   
   run_tests;
   
   __DATA__
   
   === TEST 1: set global rules
   --- yaml_config
   apisix:
     node_listen: 1984
     admin_key: null
   nginx_config:
     http:
       enable_access_log: false
   --- config
       location /t {
           content_by_lua_block {
               local t = require("lib.test_admin").test
               local code, body = t('/apisix/admin/global_rules/1',
                   ngx.HTTP_PUT,
                   [[{
                       "plugins": {
                           "prometheus": {}
                       }
                   }]]
               )
   
               if code >= 300 then
                   ngx.status = code
                   ngx.say(body)
                   return
               end
   
              code, body = t('/apisix/admin/routes/1',
                   ngx.HTTP_PUT,
                   [[{
                       "uri": "/hello",
                       "upstream": {
                           "nodes": {
                               "127.0.0.1:1980": 1
                           },
                           "type": "roundrobin"
                       }
                   }]]
               )
   
              if code >= 300 then
                  ngx.status = code
                  ngx.say(body)
                  return
              end
   
              -- wait for sync
              ngx.sleep(0.6)
   
              local http = require "resty.http"
              local httpc = http.new()
              local uri = "http://127.0.0.1:" .. ngx.var.server_port .. "/hello"
              local res, err = httpc:request_uri(uri, {method = "GET"})
              if not res then
                  ngx.say(err)
                  return
              end
   
              ngx.say("passed")
           }
       }
   --- wait: 1
   --- response_body
   passed
   ```
   
   I will be tracking this bug.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@apisix.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [apisix] spacewander closed issue #6095: bug: unknown proxy_mirror exception

Posted by GitBox <gi...@apache.org>.
spacewander closed issue #6095:
URL: https://github.com/apache/apisix/issues/6095


   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@apisix.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org