0

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)?

  • Does the file /var/www/ssl/home/server/css/<whatever>.css exist? – Michael Hampton Oct 17 '18 at 3: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 8:33
  • The path to a css file is /home/server/css/main.css (accessed with a URI of example.com/css/main.css). – Rob Oct 17 '18 at 10:55
0

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.

| improve this answer | |
  • You can also use `location /css { root /home/server; try_files $uri $uri/ =404; } – Tero Kilkanen Oct 17 '18 at 20:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.