The primary place the subdomains are published is through the Bing Maps Imagery Metadata data service https://learn.microsoft.com/en-us/bingmaps/rest-services/imagery/get-imagery-metadata Note that it is possible that different Bing Maps tile servers will have different subdomains, and subdomains may change over time. That said, they have been (t0, t1, t2, t3) for nearly a decade now.
Note, when directly accessing Bing Maps tiles, the terms of use require calling the imagery metadata service at the start of a user session to ensure the latest tile servers are used and to track usage for billing purposes. That said, if you are simply proxying the tile requests being made from a Bing Maps map control, that will already be doing this behind the scenes and there is no need to do this again.
With the above in mind, I recommend you consider one of the two options below:
- Add monitoring to your app that checks for failed tile requests. If a certain number of tiles fail within a period of time, try calling the imagery metadata service to get updated subdomains. If that call fails it could be an issue with your account, or the service is down. I would have the service raise an alert in the logs. If it is successful and the subdomains are the same, it's possible there is just an issue with the tile servers. Again raise an alert in your logs so your support team can investigate.
- Hardcode the subdomains in your app. If you have documentation for maintaining your app for whomever will be supporting it, make a not about this and link to the imagery metadata service docs. With this approach, if the service ever change the subdomains your proxy will likely have issues and an update will be needed. This option requires a lot less work, but has more potential for future headaches if something changes.