Hi, first of all thank you for a great piece of software.

**Describe the bug**

PR  #15646 fixes #10417 by matching the S3 endpoint region using the following regular expression: `s3.<region>.amazonaws`. Attempting to use an S3 compatible storage engine hosted outside of AWS an authentication error due to mismatch with the default region (`us-east-1`).

**Does it reproduce on recent release?**
Reproduces on `ClickHouse server version 21.4.5.46 (official build)`

**How to reproduce?**

The following query fails:

`SELECT * from s3('https://s3.gra.cloud.ovh.net/..., 'key', 'secret', 'csv', '...') LIMIT 10`

**Expected behavior**

One potential solution would be to allow the region to be specified in the S3 disk settings (adding vendor-specific regexp patterns in  `PocoHTTPClientConfiguration::updateSchemeAndRegion` seems unrealistic).
break;
                case Aws::Http::HttpMethod::HTTP_DELETE:
                    poco_request.setMethod(Poco::Net::HTTPRequest::HTTP_DELETE);
                    break;
                case Aws::Http::HttpMethod::HTTP_PUT:
                    poco_request.setMethod(Poco::Net::HTTPRequest::HTTP_PUT);
                    break;
                case Aws::Http::HttpMethod::HTTP_HEAD:
                    poco_request.setMethod(Poco::Net::HTTPRequest::HTTP_HEAD);
                    break;
                case Aws::Http::HttpMethod::HTTP_PATCH:
                    poco_request.setMethod(Poco::Net::HTTPRequest::HTTP_PATCH);
                    break;
            }
            for (const auto & [header_name, header_value] : request.GetHeaders())
                poco_request.set(header_name, header_value);
            Poco::Net::HTTPResponse poco_response;
            Stopwatch watch;
            auto & request_body_stream = session->sendRequest(poco_request);
            if (request.GetContentBody())
            {
                LOG_TRACE(log, "Writing request body.");
                if (attempt > 0) 
                {
                    request.GetContentBody()->clear();
                    request.GetContentBody()->seekg(0);
                }
                auto size = Poco::StreamCopier::copyStream(*request.GetContentBody(), request_body_stream);
                LOG_DEBUG(log, "Written {} bytes to request body", size);
            }