Skip to main content

TIL: Some Apache Config Options

I run Apache as my main web server. There’s rarely a need to modify anything but when there is, it’s usually quite simple. That’s mainly why I never bothered to switch to nginx. Over the course of last month I had to change two things, here’s a short summary.

I wanted to share some markdown (.md) files but my configuration forced download (or at least didn’t request in-lining) even though it’s just a text file that could be rendered in the browser. I learned that this behavior depends on Content-Disposition HTTP header. Apache has a module mod_headers that allows setting arbitrary headers, along with FilesMatch I came up with the following solution:

<IfModule mod_headers.c>
  <FilesMatch ".+\.md$">
    Header set Content-Disposition inline
    Header set Content-Type text/plain
  </FilesMatch>
</IfModule>

Today I wanted to add a static files hosting to a VirtualHost that was serving as a reverse proxy until now. I knew about Alias directive but it didn’t work out of the box — the requests for aliased path were still proxied to an application that didn’t know how to handle them. It turned out that the priority of ProxyPass is higher than Alias so I had to explicitly write an exclusion for the aliased directory like so:

(...)
ProxyPass /static !
Alias /static /path/to/my/static
ProxyPass / http://127.0.0.1:1337/
ProxyPassReverse / http://127.0.0.1:1337/
(...)