Then I see a login screen like this (notice the image does not load):
The image does not load because it's being requested from example.com/images/rstudio.png
Finally, when I try to login with an existing user/pass on my system, I get Error: Not Found.
I guess the instructions should be updated. My guess is that serving from a custom path like example.com/rstudio is more difficult to set up than serving from a naked domain like example.com.
I'm hoping to have a chance to give this a shot later and see if I can reproduce. In the meantime, it can be helpful to enable the Chrome / Firefox developer tools and look at the "network" tab to see where you are being routed:
You can also do some cool stuff with curl - i.e. curl -i http://my.url will show the response header, which can be useful for determining what is going on with a proxy.
Sorry for the (extreme) delay here. I have been doing some digging on this today.
In your configuration for RStudio, it looks like ProxyPreserveHost On is causing problems. After commenting out that line, the configuration works as expected for me.
I am planning some updates to the support article for this type of behavior to be sure that this experience is improved. Apologies it took so long for me to get to this!
This definitely looks like textbook proxy-mis-configuration. However, this set-up works fine for me, and everything looks correct! Would you mind sharing your rserver.conf and the full apache VirtualHost configuration? It is possible that there may be another directive that is causing problems somewhere. It also may be necessary to restart the apache server (something like service apache2 restart) to pick up any changes to your configuration.
I am not exactly sure whether this is also related to a bad Apache proxy config, but I run into "Trying to reconnect" errors with all my Shiny apps (behind Apache2 with mod_auth_openid enabled and Google OAuth credentials), as shown below. The apps load no problem, but after session idle time, users are not able to reconnect.
Tried adding session$allowReconnect(TRUE) to server.R, but no difference.