1

When trying to get Nginx to use a certain directory for css files, I cannot seem to get the path to resolve: I keep getting a 404.

server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /etc/ssl/servercert.pem;
    ssl_certificate_key  /etc/ssl/serverkey.pem;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    root /var/www/ssl;

    location ~ ^/css/([a-z]+.css)$ {
        try_files /home/server/css/$1 =404;
        access_log  /var/log/nginx/loc.log test;
    }
}

I have tried combinations of alias and root in combination with the try_files but I cannot seem to get them to resolve. What is the proper method of accomplishing a server side rewrite to another directory in Nginx (I am migrating from Lighttpd)?

Rob
  • 141
  • 1
  • 6
  • Does the file `/var/www/ssl/home/server/css/.css` exist? – Michael Hampton Oct 17 '18 at 03:21
  • If the `css` directory is in `/home/server/`, you just need to use `root /home/server;`. Otherwise, tell us the URI of one of your CSS files together with the full path to that file in the filesystem. – Richard Smith Oct 17 '18 at 08:33
  • The path to a css file is /home/server/css/main.css (accessed with a URI of https://example.com/css/main.css). – Rob Oct 17 '18 at 10:55

1 Answers1

1

With help from the comments and this question I was able to figure out the proper configuration:

server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /etc/ssl/servercert.pem;
    ssl_certificate_key  /etc/ssl/serverkey.pem;

    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;

    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;

    root /var/www/ssl;

    location ~ ^/css/([a-z]+.css)$ {
        root /home/server/css;
        try_files /$1 =404;
        access_log  /var/log/nginx/loc.log test;
    }
}

In my earlier attempts I was missing the leading / in the try_files.

Rob
  • 141
  • 1
  • 6