I've finished testing and ended up using MapProxy 1.12 running behind a proxy that uses nginx and Let's Encrypt to support HTTPS. I found that when I used a plain HTTP service, then checked the log files for Portal that it was switching the URL to HTTPS without telling me anything useful; just that useless "service does not exist" error. Apparently not ALL the time since I was able to get HTTP services working earlier (no really I swear I did!!) ANYWAY after switching to use HTTPS everything seems to work. On ArcGIS I found the docs that said it HAS to be HTTPS. I don't see that requirement in Portal docs but I am probably just missing it.
Check your log files! It takes some work to dig them up but they are there. On our Windows-based server they are in
C:/arcgis/arcgisportal/logs/NAME_OF_SERVER_HERE/portal/portal-DATE_EMBEDDED_HERE.log
(Message to ESRI programmers: go learn about logging by a sysadmin book about Linux. The current log should be in "portal.log" and the only old ones should have the datestamp. And you can skip the server name thing, that's super annoying. But I digress.)
The problem I was having generated this log message:
<Msg time="2019-12-12T16:56:31,46" type="SEVERE" code="219999" source="Sharing" process="14892" thread="1" methodName="" machine="CC-GIS.CLATSOP.CO.CLATSOP.OR.US" user="" elapsed="" requestID=""> URL 'https://giscache.co.clatsop.or.us/city-aerials/wms?SERVICE=WMS&REQUEST=GetCapabilities' is not accessible: Error. Connection refused: connect.</Msg>
Now that I have the HTTPS service running I can cut and paste the request URL into a browser and see that it works just fine. https://giscache.co.clatsop.or.us/city-aerials/wms?SERVICE=WMS&REQUEST=GetCapabilities
If you have any interest in Docker containers then you can see what I did by looking at these projects on Github.
The repository wildsong/docker-mapproxy uses Docker Compose to set up instances of MapProxy and CouchDB (CouchDB is the tile store database). The repository wildsong/docker-proxy uses Docker Compose to set up containers to manage nginx as a reverse proxy and a service that will generate and maintain HTTPS certificates at Let's Encrypt.
They are separate projects but are designed to work together.
Hope this helps someone out there. Brian