It appears that hostnames configured as virtual hosts with gmnisrv are case-sensitive. Since DNS hostnames are case insensitive I would have expected gmnisrv to lowercase-ify incoming requests prior to matching the directives in the INI file. To test this I attempted to load gemini://gopher.black (which uses gmnisrv) and gemini://GOPHER.BLACK via a variety of clients. Some clients handle lowercasifying the request on their end, but many do not. Amfora is a good example. Use that returns either the correct gemini site or Proxy Request Refused in the case of the capitalized version.
Yeah, this seems like a legitimate bug. Patches welcome.
I've not touched C much in 20 years, but I grabbed the source thinking this should be an easy fix. "Proxy Request Refused" is response code 53. I see it defined in the source as GEMINI_STATUS_PROXY_REQUEST_REFUSED, but the only reference is in serve.c where the error message is "Refusing proxy to non-gemini URL". Based on the code I would have expected this to hit the "Protocol error: hostname does not match SNI" block and given a GEMINI_STATUS_BAD_REQUEST response instead of the 53 I'm seeing. I'm guessing I'm just not following the logic as to what's going on here. I'm sure it's an easy patch for someone a bit more versed in the language.