Streamlit stuck on "Please Wait" if VPN is in use - CORS and Websocket TOML settings ineffective

I’ve sunk a lot of hours into troubleshooting Streamlit getting stuck on “Please wait…” on desktop devices. I’ve tried a lot of different .conf file settings for NGINX as well as experimenting with turning SSL off, getting Cloudflare out of the picture, disabling CORS and websocket compression, etc, etc.

My problem is described here along with one of my recent .conf files:

https://stackoverflow.com/questions/73126055/streamlit-gets-stuck-on-please-wait-with-nginx-reverse-proxy-official-sol

[Note: I have since removed the Stackoverflow question because I determined the problem to be VPN related, as noted in the update below]

I’ve managed to rule out the following as sources of the problem:

  • SSL
  • Cloudflare
  • browser settings
  • the 2 officially listed Streamlit run options (CORS + compression)
  • Docker (I tried it to see if it was a solution but since not I’ve avoid using it in the other 99% of attempts)

The app works fine on mobile devices and depending on whether I keep CORS / compression disabled I can get it to work with ip:port on desktop just not via DNS (and again I tested this without SSL, etc, using multiple domain names).

In the Developer Tools of the browser I can see messages related to websockets not being able to connect and - in a subset of cases where I try adding /streams to the conf file - it’s unable to connect to streams.

Screenshot_2022-07-28_14-31-58

I’ve also tried hitting the computer with a shoe.

UPDATE

I’ve noticed a near 100% correlation between this problem and the use of commercial VPN. It’s good that the problem is narrowed down, but it’s still big enough to abandon Streamlit if it can’t be mitigated because lots of users use VPN and I don’t know if any other web frameworks that fail so spectacularly as a result of their usage.

Any guidance would be greatly appreciated.