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

feat(openid-connect): add proxy_opts attribute #9948

Merged

Conversation

darkSheep404
Copy link
Contributor

@darkSheep404 darkSheep404 commented Aug 2, 2023

Description

update openid-connect docs, add attribute proxy-opts,which enable openid-connect access oauth2 server with http-proxy sever
更新openid-connect 文档 添加属性 proxy-opts,通过配置此属性 可以使得openid-connect 使用代理服务器访问 配置的oauth2服务器
Fixes # (issue)
#9922

Here is a simple diagram,the plugin config of openid-connect will be passed to openidc.lua as opts,and will be used to set_proxy_options
这里是一个简单的图,openid-connect 插件的配置 将会被传递给 openidc.lua文件作为opts,并被用来 指定代理服务器
image

    if httpc and proxy_opts and type(proxy_opts) == "table" then
        log(DEBUG, "openidc_configure_proxy : use http proxy")
        httpc:set_proxy_options(proxy_opts)
    else
        log(DEBUG, "openidc_configure_proxy : don't use http proxy")
    end
end

Checklist

  • I have explained the need for this PR and the problem it solves
  • I have explained the changes or the new features added to this PR
  • I have added tests corresponding to this change
  • I have updated the documentation to reflect this change
  • I have verified that this change is backward compatible (If not, please discuss on the APISIX mailing list first)

@darkSheep404 darkSheep404 changed the title docs: add proxy_opts attribute for openid-connect.md (#9922) docs: add proxy_opts attribute for openid-connect.md Aug 2, 2023
@darkSheep404
Copy link
Contributor Author

hi @Sn0rt

Can you please help me to review this PR
After our last discussion, by reading the openid-connect.lua and openidc.lua source code I found the available configuration items and tested them in my online environment
If there is no problem, I will update it to the document the LTS version too.
But there seems to be no better way for me to update all the documentation at once than to give each release a PR

你可以帮我review这个PR吗
在我们上次讨论之后 通过阅读openid-connet与openid的源码 我找到了可用的配置项,并且在我的线上环测试过是可行的
如果没问题的话 我会再把它更新到LTS版本的文档
不过似乎我没有更好的方式去一次性更新所有文档 除了给每个版本都提一次PR

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

Thanks for your PR

  1. Can the document not be modified so much? I think you should just add a line.
  2. Where does this option come from? How to confirm that it works normally, can you explain briefly? Indeed, it may be inconvenient to build tests because it involves proxy.

@darkSheep404
Copy link
Contributor Author

Thanks for your PR

  1. Can the document not be modified so much? I think you should just add a line.
  2. Where does this option come from? How to confirm that it works normally, can you explain briefly? Indeed, it may be inconvenient to build tests because it involves proxy.

yes,this pr only add a proxy_opts attribute to doc ,if use git tools which can ignore format and emptylines will be more clearly,The indentation above is affected because markdown's table has been modified by adding a new line

是的 这个PR 其实只加了一个属性到文档,如果使用忽略格式化和空行的git 工具可以更清晰的看到更改. 因为向markdown的的table加了一行, 所以影响到了上面的缩进

或者我可以重新提一个影响代码更少的pr

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

是的 这个PR 其实只加了一个属性到文档,如果使用忽略格式化和空行的git 工具可以更清晰的看到更改. 因为向markdown的的table加了一行, 所以影响到了上面的缩进

问题是你加的这个选项为啥会工作呢? 可以解释一下么?

@darkSheep404
Copy link
Contributor Author

darkSheep404 commented Aug 2, 2023

Thanks for your PR

  1. Can the document not be modified so much? I think you should just add a line.
  2. Where does this option come from? How to confirm that it works normally, can you explain briefly? Indeed, it may be inconvenient to build tests because it involves proxy.

Thanks for your PR

  1. Can the document not be modified so much? I think you should just add a line.
  2. Where does this option come from? How to confirm that it works normally, can you explain briefly? Indeed, it may be inconvenient to build tests because it involves proxy.

hi @Sn0rt
像上文中的流程图一样
openid-connect插件 通过http请求oauth2服务器的操作 都是调用openidc.lua的方法来实现
openidc.lua 发起http请求时 都会通过以下代码新建http request

local httpc = http.new()
openidc_configure_timeouts(httpc, opts.timeout)
openidc_configure_proxy(httpc, opts.proxy_opts)

其中configure_proxy方法 会检测opts.proxy_opts属性是否存在 存在则会配置代理

local function openidc_configure_proxy(httpc, proxy_opts)
    if httpc and proxy_opts and type(proxy_opts) == "table" then
        log(DEBUG, "openidc_configure_proxy : use http proxy")
        httpc:set_proxy_options(proxy_opts)
    else
        log(DEBUG, "openidc_configure_proxy : don't use http proxy")
    end
end

openid-connect 调用openidc.lua时 会把拷贝的插件的配置conf (_M_rewrite入口处 会local conf = core.table.clone(plugin_conf))
作为第一个参数 传入
openidc.lua把传入的第一个参数作为opts接收

调用openidc.authenticate()方法时

#in openid-connect.lua
 response, err = openidc.authenticate(conf,_,_,session_opts)
#in openidc.lua
openidc.authenticate(opts, target_url, unauth_action, session_opts)

所以 openid-connect插件配置proxy_opts参数时 会传给openidc.lua 成为opts.proxy_opts,
用于新建http请求时 配置代理

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

看上去不错. 修改一下文档?
我approve 一下 CI.

@darkSheep404 darkSheep404 force-pushed the master-darksheep404-doc-proxy-opts branch from dc717ca to 9021bc8 Compare August 2, 2023 06:47
@darkSheep404
Copy link
Contributor Author

darkSheep404 commented Aug 2, 2023

看上去不错. 修改一下文档? 我approve 一下 CI.

hi @Sn0rt
我已经重新提交了 现在只加了两行~
感谢review !

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

需要多等待一下.

  1. 如果能用单元测试覆盖到这个选项最好 (可能有难度
  2. 单元测试覆盖不了, 需要多等待一下, 我会把你的代码 fetch 到我的开发环境里面进行回归测试保证对现有的功能不受影响.

@darkSheep404
Copy link
Contributor Author

需要多等待一下.

  1. 如果能用单元测试覆盖到这个选项最好 (可能有难度
  2. 单元测试覆盖不了, 需要多等待一下, 我会把你的代码 fetch 到我的开发环境里面进行回归测试保证对现有的功能不受影响.

好的 thk thk~

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

你测试了这个格式么 "http://username:password@127.0.0.1:8080" 么?

@darkSheep404
Copy link
Contributor Author

darkSheep404 commented Aug 2, 2023

你测试了这个格式么 "http://username:password@127.0.0.1:8080" 么?

hi 我这边 只用到了 不需要认证的代理服务器
所以没有试过这个格式

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

你测试了这个格式么 "http://username:password@127.0.0.1:8080" 么?

hi 我这边 只用到了 不需要认证的代理服务器 所以没有试过这个格式

添加一个 test 吧, 内容如下.

=== TEST 5: Set up new route access the auth server via http proxy
--- ONLY
--- config
    location /t {
        content_by_lua_block {
            local t = require("lib.test_admin").test
            local code, body = t('/apisix/admin/routes/1',
                 ngx.HTTP_PUT,
                 [[{
                        "plugins": {
                            "openid-connect": {
                                "client_id": "kbyuFDidLLm280LIwVFiazOqjO3ty8KH",
                                "client_secret": "60Op4HFM0I8ajz0WdiStAbziZ-VFQttXuxixHHs2R7r7-CW8GR79l-mmLqMhc-Sa",
                                "discovery": "http://127.0.0.1:1980/.well-known/openid-configuration",
                                "redirect_uri": "https://iresty.com",
                                "ssl_verify": false,
                                "timeout": 10,
                                "scope": "apisix",
                                "proxy_opts": "http://username:password@127.0.0.1:8080",
                                "use_pkce": false
                            }
                        },
                        "upstream": {
                            "nodes": {
                                "127.0.0.1:1980": 1
                            },
                            "type": "roundrobin"
                        },
                        "uri": "/hello"
                }]]
                )

            if code >= 300 then
                ngx.status = code
            end
            ngx.say(body)
        }
    }
--- response_body
passed

可以使用下面指令格式化测试文件

~/w/apisix *master> ./utils/reindex t/plugin/openid-connect.t
reindex: t/plugin/openid-connect.t:	skipped.

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

讲道理, 既然想把这个选项暴露出来为啥没有更新这个地方? openid-connect.lua

local schema = {
    type = "object",
    properties = {
        client_id = {type = "string"},
        client_secret = {type = "string"},
        discovery = {type = "string"},
        scope = {
            type = "string",
            default = "openid",
        },
        ssl_verify = {
            type = "boolean",
            default = false,
        },
        timeout = {
            type = "integer",
            minimum = 1,
            default = 3,
            description = "timeout in seconds",
        },
        introspection_endpoint = {
            type = "string"
        },
        introspection_endpoint_auth_method = {
            type = "string",
            default = "client_secret_basic"
        },
        bearer_only = {
            type = "boolean",
            default = false,
        },
        session = {
            type = "object",
            properties = {
                secret = {
                    type = "string",
                    description = "the key used for the encrypt and HMAC calculation",
                    minLength = 16,
                },
            },
            required = {"secret"},
            additionalProperties = false,
        },
        realm = {
            type = "string",
            default = "apisix",
        },
        logout_path = {
            type = "string",
            default = "/logout",
        },
        redirect_uri = {
            type = "string",
            description = "use ngx.var.request_uri if not configured"
        },
        post_logout_redirect_uri = {
            type = "string",
            description = "the URI will be redirect when request logout_path",
        },
        unauth_action = {
            type = "string",
            default = "auth",
            enum = {"auth", "deny", "pass"},
            description = "The action performed when client is not authorized. Use auth to " ..
                "redirect user to identity provider, deny to respond with 401 Unauthorized, and " ..
                "pass to allow the request regardless."
        },
        public_key = {type = "string"},
        token_signing_alg_values_expected = {type = "string"},
        use_pkce = {
            description = "when set to true the PKEC(Proof Key for Code Exchange) will be used.",
            type = "boolean",
            default = false
        },
        set_access_token_header = {
            description = "Whether the access token should be added as a header to the request " ..
                "for downstream",
            type = "boolean",
            default = true
        },
        access_token_in_authorization_header = {
            description = "Whether the access token should be added in the Authorization " ..
                "header as opposed to the X-Access-Token header.",
            type = "boolean",
            default = false
        },
        set_id_token_header = {
            description = "Whether the ID token should be added in the X-ID-Token header to " ..
                "the request for downstream.",
            type = "boolean",
            default = true
        },
        set_userinfo_header = {
            description = "Whether the user info token should be added in the X-Userinfo " ..
                "header to the request for downstream.",
            type = "boolean",
            default = true
        },
        set_refresh_token_header = {
            description = "Whether the refresh token should be added in the X-Refresh-Token " ..
                "header to the request for downstream.",
            type = "boolean",
            default = false
        }
    },
    encrypt_fields = {"client_secret"},
    required = {"client_id", "client_secret", "discovery"}
}

@darkSheep404
Copy link
Contributor Author

hi @Sn0rt 我添加完测试了
不过
现在utils内没有这个reindex文件
image

image

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

hi @Sn0rt 我添加完测试了 不过 现在utils内没有这个reindex文件 image

image

https://apisix.apache.org/docs/apisix/building-apisix/ 我想这个链接可能对你有用.

试一下 make deps ?

@darkSheep404
Copy link
Contributor Author

darkSheep404 commented Aug 2, 2023

讲道理, 既然想把这个选项暴露出来为啥没有更新这个地方? openid-connect.lua

local schema = {
    type = "object",
    properties = {
        client_id = {type = "string"},
        client_secret = {type = "string"},
        discovery = {type = "string"},
        scope = {
            type = "string",
            default = "openid",
        },
        ssl_verify = {
            type = "boolean",
            default = false,
        },
        timeout = {
            type = "integer",
            minimum = 1,
            default = 3,
            description = "timeout in seconds",
        },
        introspection_endpoint = {
            type = "string"
        },
        introspection_endpoint_auth_method = {
            type = "string",
            default = "client_secret_basic"
        },
        bearer_only = {
            type = "boolean",
            default = false,
        },
        session = {
            type = "object",
            properties = {
                secret = {
                    type = "string",
                    description = "the key used for the encrypt and HMAC calculation",
                    minLength = 16,
                },
            },
            required = {"secret"},
            additionalProperties = false,
        },
        realm = {
            type = "string",
            default = "apisix",
        },
        logout_path = {
            type = "string",
            default = "/logout",
        },
        redirect_uri = {
            type = "string",
            description = "use ngx.var.request_uri if not configured"
        },
        post_logout_redirect_uri = {
            type = "string",
            description = "the URI will be redirect when request logout_path",
        },
        unauth_action = {
            type = "string",
            default = "auth",
            enum = {"auth", "deny", "pass"},
            description = "The action performed when client is not authorized. Use auth to " ..
                "redirect user to identity provider, deny to respond with 401 Unauthorized, and " ..
                "pass to allow the request regardless."
        },
        public_key = {type = "string"},
        token_signing_alg_values_expected = {type = "string"},
        use_pkce = {
            description = "when set to true the PKEC(Proof Key for Code Exchange) will be used.",
            type = "boolean",
            default = false
        },
        set_access_token_header = {
            description = "Whether the access token should be added as a header to the request " ..
                "for downstream",
            type = "boolean",
            default = true
        },
        access_token_in_authorization_header = {
            description = "Whether the access token should be added in the Authorization " ..
                "header as opposed to the X-Access-Token header.",
            type = "boolean",
            default = false
        },
        set_id_token_header = {
            description = "Whether the ID token should be added in the X-ID-Token header to " ..
                "the request for downstream.",
            type = "boolean",
            default = true
        },
        set_userinfo_header = {
            description = "Whether the user info token should be added in the X-Userinfo " ..
                "header to the request for downstream.",
            type = "boolean",
            default = true
        },
        set_refresh_token_header = {
            description = "Whether the refresh token should be added in the X-Refresh-Token " ..
                "header to the request for downstream.",
            type = "boolean",
            default = false
        }
    },
    encrypt_fields = {"client_secret"},
    required = {"client_id", "client_secret", "discovery"}
}

确实没有想到去更新这个地方
我等下一起补一下吧
不过要等一段时间了 有个会

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

Looking forward to you becoming a new contributor to APISIX

期待你成为APISIX 新的贡献者

@darkSheep404 darkSheep404 force-pushed the master-darksheep404-doc-proxy-opts branch from 1a43a97 to d2cf653 Compare August 2, 2023 09:59
@darkSheep404
Copy link
Contributor Author

darkSheep404 commented Aug 2, 2023

hi @Sn0rt 我更新了插件的schema
但是说来惭愧
我的工作pc是Windows,且因为公司网络原因 make deps时 需要从
github下载依赖时 会有网络问题
(我们工作中使用apisix是直接跑的docker 镜像文件)

可以麻烦你帮我运行一下格式化命令?
我再对应做修改吗?

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 2, 2023

hi @Sn0rt 我更新了插件的schema 但是说来惭愧 我的工作pc是Windows,且因为公司网络原因 make deps时 需要从 github下载依赖时 会有网络问题 (我们工作中使用apisix是直接跑的docker 镜像文件)

可以麻烦你帮我运行一下格式化命令? 我再对应做修改吗?

可以, 我将会在你 commit 之后添加 commit 来完善你的需求. 需要先关闭这个 PR, 重新开一个.

@darkSheep404
Copy link
Contributor Author

darkSheep404 commented Aug 2, 2023

hi @Sn0rt 我更新了插件的schema 但是说来惭愧 我的工作pc是Windows,且因为公司网络原因 make deps时 需要从 github下载依赖时 会有网络问题 (我们工作中使用apisix是直接跑的docker 镜像文件)
可以麻烦你帮我运行一下格式化命令? 我再对应做修改吗?

可以, 我将会在你 commit 之后添加 commit 来完善你的需求. 需要先关闭这个 PR, 重新开一个.

需要我先关闭这个PR吗

或者你可以在我fork仓库的分支再commit一次然后push到我这个分支 ?
这样应该也会自动更新到这个PR内

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 3, 2023

不出意外,我是没有权限往你的分支推送commit.
给你分枝发送PR, 不如将你的 分支 fork 回来, 在你的 HEAD 上添加 commit . 我今天来处理一下这个PR.

@darkSheep404
Copy link
Contributor Author

darkSheep404 commented Aug 3, 2023

不出意外,我是没有权限往你的分支推送commit. 给你分枝发送PR, 不如将你的 分支 fork 回来, 在你的 HEAD 上添加 commit . 我今天来处理一下这个PR.

我刚刚尝试 邀请你到我fork的那个github仓库 不知道是否可行
不过按你的方式处理也可以
谢谢谢谢
有需要我处理的地方艾特我就好

Signed-off-by: Sn0rt <wangguohao.2009@gmail.com>
Signed-off-by: Sn0rt <wangguohao.2009@gmail.com>
@monkeyDluffy6017
Copy link
Contributor

Please use english, thks

@monkeyDluffy6017
Copy link
Contributor

@Sn0rt Is this pr ready?

@monkeyDluffy6017 monkeyDluffy6017 added the wait for update wait for the author's response in this issue/PR label Aug 3, 2023
@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 3, 2023

@Sn0rt Is this pr ready?

yep. wait the CI.
now the LDAP related test case can't pass.

@monkeyDluffy6017 monkeyDluffy6017 changed the title docs: add proxy_opts attribute for openid-connect.md feat(openid-connect): add proxy_opts attribute Aug 3, 2023
@darkSheep404
Copy link
Contributor Author

@Sn0rt Is this pr ready?

yep. wait the CI. now the LDAP related test case can't pass.

Sorry, is this proxy attribute causing the ladp test to fail?😶

@Sn0rt
Copy link
Contributor

Sn0rt commented Aug 4, 2023

@Sn0rt Is this pr ready?

yep. wait the CI. now the LDAP related test case can't pass.

Sorry, is this proxy attribute causing the ladp test to fail?😶

the LDAP is upstream error. I will merge the master branch and run CI again.

@darkSheep404
Copy link
Contributor Author

@Sn0rt Is this pr ready?

yep. wait the CI. now the LDAP related test case can't pass.

Sorry, is this proxy attribute causing the ladp test to fail?😶

the LDAP is upstream error. I will merge the master branch and run CI again.

noted, thk thk~

@@ -130,6 +130,28 @@ local schema = {
"header to the request for downstream.",
type = "boolean",
default = false
},
proxy_opts = {
description = "access via openid server via a proxy server ",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo?

seems to, i just fixed it
by the way, do you think it will be better by using "oauth2 server" instead of "openid server" ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you mean OpenID Provider(OP)?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR will be handed over to you to follow up later, I have to fix other problems. Can you? @darkSheep404

@@ -61,6 +61,7 @@ description: OpenID Connect allows the client to obtain user information from th
| session | object | False | | | When bearer_only is set to false, openid-connect will use Authorization Code flow to authenticate on the IDP, so you need to set the session-related configuration. |
| session.secret | string | True | Automatic generation | 16 or more characters | The key used for session encrypt and HMAC operation. |
| unauth_action | string | False | "auth" | | Specify the response type on unauthenticated requests. "auth" redirects to identity provider, "deny" results in a 401 response, "pass" will allow the request without authentication. |
| proxy_opts | object | False | | | Configure an HTTP proxy to be used with the openid-connect plugin. |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you list all options?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you list all options?

done,pls help to review
add no-proxy option refer to
https://github.com/ledgetech/lua-resty-http#set_proxy_options

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't see the options in proxy_opts

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't see the options in proxy_opts

hi @monkeyDluffy6017

i had add no_proxy option before
base on doc in lua-resty-http, that is all options now
Or you may mean add all options of proxy_opts in docs instead of just in plugin schema?
image

doc in lua-resty-http

set_proxy_options
syntax: httpc:set_proxy_options(opts)

Configure an HTTP proxy to be used with this client instance. The opts table expects the following fields:

http_proxy: an URI to a proxy server to be used with HTTP requests
http_proxy_authorization: a default Proxy-Authorization header value to be used with http_proxy, e.g. Basic ZGVtbzp0ZXN0, which will be overriden if the Proxy-Authorization request header is present.
https_proxy: an URI to a proxy server to be used with HTTPS requests
https_proxy_authorization: as http_proxy_authorization but for use with https_proxy (since with HTTPS the authorisation is done when connecting, this one cannot be overridden by passing the Proxy-Authorization request header).
no_proxy: a comma separated list of hosts that should not be proxied.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The option you added in the doc proxy_opts, it should have some attributes as you described in the schema.
The attributes should be added to the doc too, or the users don't know how to use the proxy_opts

        proxy_opts = {
            description = "access openid server via a proxy server ",
            type = "object",
            properties = {
                http_proxy = {
                    type = "string",
                    description = "Http proxy: http://proxy-server:80",
                },
                https_proxy = {
                    type = "string",
                    description = "Https proxy: https://proxy-server:80",
                },
                http_proxy_authorization = {
                    type = "string",
                    description = "Basic [base64 username:password].",
                },
                https_proxy_authorization = {
                    type = "string",
                    description = "Basic [base64 username:password].",
                },
                no_proxy = {
                    type = "string",
                    description = "A comma separated list of hosts that should not be proxied.",
                }
            },

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hi @monkeyDluffy6017
I just submitted the modification, please help to review it again when it is convenient

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hi @Sn0rt
by the way
I noticed that you modified the desc in openid-connect schema
by using https://proxy-server instead of http://proxy-server for https_proxy .
I changed it back in this commit

Because when I did that before in our project, it caused an exception protocol https not supported for proxy connections
I fix it by set https_proxy = http://proxy-server instead of https://proxy-server .

In addition I noticed some hardcoded special handling in the lua-resty-http source code say https is not support,like below
image

We may need to confirm this disagreement

@moonming
Copy link
Member

@Sn0rt @monkeyDluffy6017 please take a look

@monkeyDluffy6017 monkeyDluffy6017 added approved and removed wait for update wait for the author's response in this issue/PR labels Aug 14, 2023
@shreemaan-abhishek shreemaan-abhishek merged commit b9dc8b8 into apache:master Aug 16, 2023
34 checks passed
@Sn0rt Sn0rt deleted the master-darksheep404-doc-proxy-opts branch August 18, 2023 03:06
hongbinhsu pushed a commit to fitphp/apix that referenced this pull request Aug 22, 2023
* upstream/master: (77 commits)
  docs: Update admin-api.md (apache#10056)
  ci: fix a bug that can not open nginx.pid (apache#10061)
  feat: remove rust dependency by rollback lua-resty-ldap on master (apache#9936)
  docs: fix grpc-transcode.md error (apache#10059)
  feat: upgrade lua dependencies (apache#10051)
  fix: rollback lua-resty-session to 3.10 (apache#10046)
  feat: upgrade resty-redis-cluster from  1.02-4->1.05-1 (apache#10041)
  feat: update lua library (apache#10037)
  fix: worker not exited when executing quit or reload command (apache#9909)
  fix: traffic split plugin not validating upstream_id (apache#10008)
  ci: update the timeout value in cli.yml (apache#10026)
  fix(tencent-cloud-cls): DNS parsing failure (apache#9843)
  chore(deps): bump actions/setup-node from 3.7.0 to 3.8.0 (apache#10025)
  feat(openid-connect): add proxy_opts attribute (apache#9948)
  perf(log-rotate): replace string.sub with string.byte (apache#9984)
  fix(ci): replace github action in update-labels.yml (apache#9987)
  fix: can't sync etcd data if key has special character (apache#9967)
  perf(aws-lambda): cache the index of the array (apache#9944)
  fix: add support for dependency installation on endeavouros (apache#9985)
  chore(ci): automate management of unresponded issues (apache#9927)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Archived in project
Development

Successfully merging this pull request may close these issues.

None yet

6 participants