on a website I host I have a nginx set up as http server mainly for static content. Some content that gets serverd actually are software downloads (setup.exe stuff). What i want to do is somehow get nginx to serve the newest download package under a static URL. So that http://www.example.com/download/myapp leads to a download of myapp-setup-1.0.msi as long as myapp-setup-1.0.msi is the newest file in the respective content directory.
I tried to implemnt this by use of symlinks but then the problem arises that one has to set an appropriate header (Content-Disposition) containing the filename the browser displays and I do not know how to get the target filename of a symlink from inside the nginx configuration. I think this may not be possible.
Here is the config so far:
server {
listen 80;
server_name www.example.com example.com;
access_log /var/log/nginx/download.access.log;
location /download/ {
alias /var/www/download/;
default_type application/octet-stream;
}
location /download/myapp/ {
alias /var/www/download/myapp/;
index latest.msi;
default_type application/octet-stream;
if ($request_filename ~* ^.*/([^/]*?)$) {
set $exits true;
set $msi $1;
}
if ($msi = latest.msi) {
set $msi "myapp-setup-1.0.msi";
}
if ($exits) {
add_header Content-Disposition: "attachment; filename=$msi";
}
}
}
Note that latest.msi is a symlink that points to myapp-setup-1.0.msi.
So any ideas on how to implement a download of the latest file by a static url with nginx? Or does it make more sense to use some kind of cgi script for this situation?