Well, users will use everything we expose. Previously, some users even
used one of our bugs (They thought it is an intended feature, and
submit an issue after we fixed it).

Ming Wen <[email protected]> 于2021年3月22日周一 下午1:25写道:
>
> but do user need this feature?
>
> Zexuan Luo <[email protected]>于2021年3月22日 周一下午1:22写道:
>
> > Currently, we can rewrite the host to a specified value via `upstream_host
> > `:
> > http://apisix.apache.org/docs/apisix/admin-api#upstream
> >
> > Zexuan Luo <[email protected]> 于2021年3月22日周一 下午1:17写道:
> > >
> > > We have already supported custom upstream_host now.
> > >
> > > Ming Wen <[email protected]> 于2021年3月22日周一 下午12:19写道:
> > > >
> > > > do we really need to support custom upstream_host?
> > > >
> > > > Thanks,
> > > > Ming Wen, Apache APISIX PMC Chair
> > > > Twitter: _WenMing
> > > >
> > > >
> > > > Zexuan Luo <[email protected]> 于2021年3月22日周一 上午11:42写道:
> > > >
> > > > > Agree.
> > > > >
> > > > > Zhiyuan Ju <[email protected]> 于2021年3月22日周一 上午9:51写道:
> > > > > >
> > > > > > Just to make sure,
> > > > > >
> > > > > > 1. if preserve_host is false, and upstream_host is empty, then we
> > use the
> > > > > > node's host;
> > > > > > 2. if preserve_host is false, and upsteam_host is not empty, then
> > we use
> > > > > > the upstream_host users entered;
> > > > > > 3. if preserve_host is true, no matter upstream_host is empty or
> > not, we
> > > > > > use the client's host;
> > > > > >
> > > > > > Are they correct?
> > > > > >
> > > > > > Best Regards!
> > > > > > @ Zhiyuan Ju <https://github.com/juzhiyuan>
> > > > > >
> > > > > >
> > > > > > Zexuan Luo <[email protected]> 于2021年3月22日周一 上午9:46写道:
> > > > > >
> > > > > > > So now the solution is introducing two arguments:
> > > > > > > 1. upstream_host to allow the user to specify they host if the
> > host is
> > > > > > > neither passed by the client nor the node/server_name
> > > > > > > 2. preserve_host (default to false) to control if we preserve
> > the host
> > > > > or
> > > > > > > not.
> > > > > > >
> > > > > > > Zexuan Luo <[email protected]> 于2021年3月22日周一 上午9:32写道:
> > > > > > > >
> > > > > > > > I think about it again.
> > > > > > > >
> > > > > > > > {
> > > > > > > >      "upstream_host": "httpbin.org",
> > > > > > > >      "type":"roundrobin",
> > > > > > > >     "service_name": "httpbin.org"
> > > > > > > >      ...
> > > > > > > > > }
> > > > > > > >
> > > > > > > > and
> > > > > > > >
> > > > > > > > {
> > > > > > > >      "type":"roundrobin",
> > > > > > > >      "service_name": "httpbin.org"
> > > > > > > >      ...
> > > > > > > > }
> > > > > > > > are different.
> > > > > > > >
> > > > > > > > However,
> > > > > > > > the DNS discovery is not just selecting the upstream via the
> > > > > hostname.
> > > > > > > > It also allows you to specify different DNS resolvers for the
> > > > > > > > discovery. For example, you can use the company's resolver for
> > > > > regular
> > > > > > > > usage (like http-logger's target) but use a consul's DNS
> > resolver for
> > > > > > > > the discovery.
> > > > > > > >
> > > > > > > > And the discovery way returns multiple nodes and load balance
> > it
> > > > > > > > according to the `type`, while specifying a domain in the nodes
> > > > > > > > returns a node randomly.
> > > > > > > >
> > > > > > > > YuanSheng Wang <[email protected]> 于2021年3月21日周日 下午6:23写道:
> > > > > > > > >
> > > > > > > > > > I think the first type is not necessarily as we already
> > have dns
> > > > > > > > > discovery.
> > > > > > > > > >
> > > > > > > > > > We can use:
> > > > > > > > > >
> > > > > > > > > > ```
> > > > > > > > > > {
> > > > > > > > > >     "upstream_host": "httpbin.org",
> > > > > > > > > >     "type":"roundrobin",
> > > > > > > > > >     "service_name": "httpbin.org"
> > > > > > > > > >     ...
> > > > > > > > > > }
> > > > > > > > > > ```
> > > > > > > > >
> > > > > > > > > I do not think this is the best way.
> > > > > > > > > It was designed like this before there was no
> > `upstream.pass_host`
> > > > > > > field.
> > > > > > > > > Although it works, it is not user-friendly.
> > > > > > > > >
> > > > > > > > > When modifying it later, two places need to be modified. For
> > users,
> > > > > > > both
> > > > > > > > > the upstream address and host should be maintained in one
> > place.
> > > > > > > > >
> > > > > > > > > For case 1, I think this style is easy to understand and
> > maintain.
> > > > > > > > > (if he/she want to change the address, just update
> > `upstream_host`)
> > > > > > > > >
> > > > > > > > > ```1
> > > > > > > > > {
> > > > > > > > >     "upstream_host": "httpbin.org"  # send request to `
> > httpbin.org
> > > > > `
> > > > > > > with
> > > > > > > > > same host name
> > > > > > > > > }
> > > > > > > > > ```
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > On Fri, Mar 19, 2021 at 7:20 PM Zexuan Luo <
> > [email protected]
> > > > > >
> > > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > I think the first type is not necessarily as we already
> > have dns
> > > > > > > discovery.
> > > > > > > > > >
> > > > > > > > > > We can use:
> > > > > > > > > >
> > > > > > > > > > ```
> > > > > > > > > > {
> > > > > > > > > >     "upstream_host": "httpbin.org",
> > > > > > > > > >     "type":"roundrobin",
> > > > > > > > > >     "service_name": "httpbin.org"
> > > > > > > > > >     ...
> > > > > > > > > > }
> > > > > > > > > > ```
> > > > > > > > > >
> > > > > > > > > > YuanSheng Wang <[email protected]> 于2021年3月19日周五
> > 下午6:55写道:
> > > > > > > > > > >
> > > > > > > > > > > I think we can make the `upstream.node` and
> > `upstream.type`
> > > > > > > optional.
> > > > > > > > > > > We can support those three ways:
> > > > > > > > > > >
> > > > > > > > > > > ```1
> > > > > > > > > > > {
> > > > > > > > > > >     "upstream_host": "httpbin.org"  # send request to `
> > > > > httpbin.org`
> > > > > > > with
> > > > > > > > > > > same host name
> > > > > > > > > > > }
> > > > > > > > > > > ```
> > > > > > > > > > >
> > > > > > > > > > > or
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > ```2
> > > > > > > > > > > {
> > > > > > > > > > >     "upstream_host": "httpbin.org",
> > > > > > > > > > >     "type":"roundrobin",
> > > > > > > > > > >     "nodes": {"foo.com:80": 100},  # send request to `
> > foo.com`
> > > > > > > with host
> > > > > > > > > > > name `httpbin.org`
> > > > > > > > > > > }
> > > > > > > > > > > ```
> > > > > > > > > > >
> > > > > > > > > > > or
> > > > > > > > > > >
> > > > > > > > > > > ```3
> > > > > > > > > > > {
> > > > > > > > > > >     "type":"roundrobin",
> > > > > > > > > > >     "nodes": {"foo.com:80": 100},  # send request to `
> > foo.com`
> > > > > > > with
> > > > > > > > > > current
> > > > > > > > > > > request host
> > > > > > > > > > > }
> > > > > > > > > > > ```
> > > > > > > > > > >
> > > > > > > > > > > What do you think?
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > On Thu, Mar 18, 2021 at 1:07 PM Zhiyuan Ju <
> > > > > [email protected]>
> > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > And we need a plan to do some changes on APISIX IMO,
> > anyone
> > > > > > > would like
> > > > > > > > > > to
> > > > > > > > > > > > take this issue?
> > > > > > > > > > > >
> > > > > > > > > > > > Zhiyuan Ju <[email protected]>于2021年3月18日
> > 周四下午1:06写道:
> > > > > > > > > > > >
> > > > > > > > > > > > > Yep
> > > > > > > > > > > > >
> > > > > > > > > > > > > Chao Zhang <[email protected]>于2021年3月18日
> > 周四下午1:04写道:
> > > > > > > > > > > > >
> > > > > > > > > > > > >> I think the point that put forward by Ju is same
> > with
> > > > > what I
> > > > > > > > > > proposed :)
> > > > > > > > > > > > >>
> > > > > > > > > > > > >> Chao Zhang
> > > > > > > > > > > > >> https://github.com/tokers
> > > > > > > > > > > > >>
> > > > > > > > > > > > >> On March 18, 2021 at 11:55:14 AM, Ming Wen (
> > > > > > > [email protected])
> > > > > > > > > > wrote:
> > > > > > > > > > > > >>
> > > > > > > > > > > > >> chao zhang's idea is good for me.
> > > > > > > > > > > > >> what do you think?
> > > > > > > > > > > > >>
> > > > > > > > > > > > >> Thanks,
> > > > > > > > > > > > >> Ming Wen, Apache APISIX PMC Chair
> > > > > > > > > > > > >> Twitter: _WenMing
> > > > > > > > > > > > >>
> > > > > > > > > > > > >>
> > > > > > > > > > > > >> Zhiyuan Ju <[email protected]> 于2021年3月18日周四
> > > > > 上午11:49写道:
> > > > > > > > > > > > >>
> > > > > > > > > > > > >> > Any conclusion and plan here?
> > > > > > > > > > > > >> >
> > > > > > > > > > > > >> > There has 1 related PR[1].
> > > > > > > > > > > > >> >
> > > > > > > > > > > > >> > [1]
> > > > > https://github.com/apache/apisix-dashboard/pull/1603
> > > > > > > > > > > > >> >
> > > > > > > > > > > > >> > Best Regards!
> > > > > > > > > > > > >> > @ Zhiyuan Ju <https://github.com/juzhiyuan>
> > > > > > > > > > > > >> >
> > > > > > > > > > > > >> >
> > > > > > > > > > > > >> > Zhiyuan Ju <[email protected]> 于2021年3月17日周三
> > > > > 下午11:22写道:
> > > > > > > > > > > > >> >
> > > > > > > > > > > > >> > > yep, after going through Tyk & Kong, I would
> > agree to
> > > > > use
> > > > > > > > > > > > >> `preserve_host`
> > > > > > > > > > > > >> > > to replace the current 3 opinions.
> > > > > > > > > > > > >> > >
> > > > > > > > > > > > >> > > Best Regards!
> > > > > > > > > > > > >> > > @ Zhiyuan Ju <https://github.com/juzhiyuan>
> > > > > > > > > > > > >> > >
> > > > > > > > > > > > >> > >
> > > > > > > > > > > > >> > > Ming Wen <[email protected]> 于2021年3月17日周三
> > 下午5:44写道:
> > > > > > > > > > > > >> > >
> > > > > > > > > > > > >> > >> nice!
> > > > > > > > > > > > >> > >> +1
> > > > > > > > > > > > >> > >>
> > > > > > > > > > > > >> > >> Chao Zhang <[email protected]>于2021年3月17日
> > > > > 周三下午3:12写道:
> > > > > > > > > > > > >> > >>
> > > > > > > > > > > > >> > >> > Why not just use one option, "Preserve Client
> > > > > Host”, by
> > > > > > > > > > default
> > > > > > > > > > > > >> it’s
> > > > > > > > > > > > >> > >> > closed, which means the Host header will be
> > > > > rewrite to
> > > > > > > the
> > > > > > > > > > > > Upstream
> > > > > > > > > > > > >> > >> host;
> > > > > > > > > > > > >> > >> > When it’s opened, the client host will
> > inherited
> > > > > > > > > > > > >> > >> > when proxying to upstream.
> > > > > > > > > > > > >> > >> >
> > > > > > > > > > > > >> > >> > Chao Zhang
> > > > > > > > > > > > >> > >> > https://github.com/tokers
> > > > > > > > > > > > >> > >> >
> > > > > > > > > > > > >> > >> > On March 17, 2021 at 2:49:50 PM, Ming Wen (
> > > > > > > > > > [email protected])
> > > > > > > > > > > > >> wrote:
> > > > > > > > > > > > >> > >> >
> > > > > > > > > > > > >> > >> > I think there should be only two options:
> > preserve
> > > > > and
> > > > > > > use
> > > > > > > > > > > > upstream
> > > > > > > > > > > > >> > >> host,
> > > > > > > > > > > > >> > >> > the default is the latter
> > > > > > > > > > > > >> > >> >
> > > > > > > > > > > > >> > >> > JunXu Chen <[email protected]>于2021年3月17日
> > > > > > > 周三下午1:46写道:
> > > > > > > > > > > > >> > >> >
> > > > > > > > > > > > >> > >> > > Hi, Community,
> > > > > > > > > > > > >> > >> > >
> > > > > > > > > > > > >> > >> > > Currently we use `pass_host` to mark how to
> > > > > process
> > > > > > > the
> > > > > > > > > > > > upstream
> > > > > > > > > > > > >> > >> > request’s
> > > > > > > > > > > > >> > >> > > Host header.
> > > > > > > > > > > > >> > >> > >
> > > > > > > > > > > > >> > >> > > It can be one of [`pass`, `node`,
> > `rewrite`], the
> > > > > > > default
> > > > > > > > > > > > option
> > > > > > > > > > > > >> is
> > > > > > > > > > > > >> > >> > `pass`.
> > > > > > > > > > > > >> > >> > > pass: Pass the client's host transparently
> > to the
> > > > > > > upstream;
> > > > > > > > > > > > >> > >> > > node: Use the host configured in the node
> > of
> > > > > > > upstream;
> > > > > > > > > > > > >> > >> > > rewrite: Use the value of the configuration
> > > > > > > upstream_host.
> > > > > > > > > > > > >> > >> > >
> > > > > > > > > > > > >> > >> > > Referring to nginx(proxy_pass), tyk and
> > kong, we
> > > > > > > found that
> > > > > > > > > > > > their
> > > > > > > > > > > > >> > >> default
> > > > > > > > > > > > >> > >> > > behavior is not to preserve the client's
> > request
> > > > > > > Host, but
> > > > > > > > > > to
> > > > > > > > > > > > set
> > > > > > > > > > > > >> > the
> > > > > > > > > > > > >> > >> > > upstream request’s Host header to the
> > hostname
> > > > > > > specified
> > > > > > > > > > in the
> > > > > > > > > > > > >> > >> > > upstream(service) by default.
> > > > > > > > > > > > >> > >> > >
> > > > > > > > > > > > >> > >> > > issues:
> > > > > > > > > > > > >> > >> > >
> > > > > > > > > > > > >> > >> > > 1. `pass_host` is not easy to understand, I
> > > > > think we
> > > > > > > could
> > > > > > > > > > use
> > > > > > > > > > > > >> > >> > > `preserve_host` or `preserve_host_header`
> > > > > instead.
> > > > > > > > > > > > >> > >> > >
> > > > > > > > > > > > >> > >> > > 2. We should also be the same behavior as
> > nginx,
> > > > > tyk
> > > > > > > and
> > > > > > > > > > kong,
> > > > > > > > > > > > >> not
> > > > > > > > > > > > >> > >> > preserve
> > > > > > > > > > > > >> > >> > > the client's request Host by default if the
> > > > > hostname
> > > > > > > has
> > > > > > > > > > been
> > > > > > > > > > > > >> > >> specified
> > > > > > > > > > > > >> > >> > in
> > > > > > > > > > > > >> > >> > > the upstream.
> > > > > > > > > > > > >> > >> > >
> > > > > > > > > > > > >> > >> > > What is your opinion? Thanks!
> > > > > > > > > > > > >> > >> > >
> > > > > > > > > > > > >> > >> > --
> > > > > > > > > > > > >> > >> > Thanks,
> > > > > > > > > > > > >> > >> > Ming Wen, Apache APISIX PMC Chair
> > > > > > > > > > > > >> > >> > Twitter: _WenMing
> > > > > > > > > > > > >> > >> >
> > > > > > > > > > > > >> > >> --
> > > > > > > > > > > > >> > >> Thanks,
> > > > > > > > > > > > >> > >> Ming Wen, Apache APISIX PMC Chair
> > > > > > > > > > > > >> > >> Twitter: _WenMing
> > > > > > > > > > > > >> > >>
> > > > > > > > > > > > >> > >
> > > > > > > > > > > > >> >
> > > > > > > > > > > > >>
> > > > > > > > > > > > > --
> > > > > > > > > > > > > 来自 琚致远
> > > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > 来自 琚致远
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > --
> > > > > > > > > > >
> > > > > > > > > > > *MembPhis*
> > > > > > > > > > > My GitHub: https://github.com/membphis
> > > > > > > > > > > Apache APISIX: https://github.com/apache/apisix
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > >
> > > > > > > > > *MembPhis*
> > > > > > > > > My GitHub: https://github.com/membphis
> > > > > > > > > Apache APISIX: https://github.com/apache/apisix
> > > > > > >
> > > > >
> >
> --
> Thanks,
> Ming Wen, Apache APISIX PMC Chair
> Twitter: _WenMing

Reply via email to