Apache httpd as reverse proxy for HTTP/2

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

Apache httpd as reverse proxy for HTTP/2

Osman Zakir

I have a web app I'm hosing on my laptop on HTTP/1.1 with HTTPS (the server code is in C++ and it uses the Boost.BEAST library for the HTTP/S functionality).  It's a currency converter app with a Google Maps GUI (not that impressive, I know).  I want to add a reverse proxy to it that would serve HTTP/2 upgrade requests.  

Right now the app is working on my laptop.  I have a slow connection, though, which is a problem.  I hope it won't be too bad.  The app URL is https://dragonosman.dynu.net:5501/ and you can go here: https://www.osmanzakir.dynu.net to check if the app is running (this is my portfolio site and the app is shown as the first one in my projects section; there's a script that checks if the app is running and tells you if it is).  

Do I need to set up a virtual host on Apache for this?  What do I need to do exactly?  

I've attached a modified httpd.conf file.  What I changed was:

Define SRVROOT "E:/programming/visual_studio_2019/Projects/currency_converter/x64/Release"
ServerRoot "${SRVROOT}"
as well as setting it to listen on port 5502, and also did this:

DocumentRoot "${SRVROOT}"
<Directory "${SRVROOT}">
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    Options Indexes FollowSymLinks

    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    AllowOverride FileInfo

    # Controls who can get stuff from this server.
    Require all granted

I set that directory in Drive E as the server root because that's where the app is being served from.  And it does work (at least it did before I tried to set up a reverse proxy, and I hope I can get it to work with the reverse proxy as well).  

I'm thinking that I'll have to have both servers running and have Apache respond to requests to upgrade to HTTP/2.  Do I have that right?  

Anyway, the source code is on GitHub here: https://github.com/DragonOsman/currency_converter .  I don't know how to find out from the HTTP request header if there's an upgrade request, so first I need to figure that out.  Someone who's good at C++ looking at my code would be a big help here.  Thanks.

To unsubscribe, e-mail: [hidden email]
For additional commands, e-mail: [hidden email]

httpd.conf (27K) Download Attachment