Nginx not loading js and css

i tried to setup nginx today and it worked but now fastcgi/nginx doesnt load/show any css and js
here is my /etc/nginx/sites-enabled/owncloud
server {
listen 80;
listen [::]:80; listen 443 ssl;
root /var/www/html/owncloud;
index index.php index.html index.htm;
server_name domain domain;
ssl_certificate
/etc/nginx/ssl/nginx.crt;
ssl_certificate_key
/etc/nginx/ssl/nginx.key;
location / {
include /etc/nginx/mime.types;
rewrite ^ /index.php$uri;
}

location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
    return 404;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {                                                    return 404;
}

location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+$
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    fastcgi_intercept_errors on;
    fastcgi_request_buffering off;
}

location ~ ^/(?:updater|ocs-provider)(?:$|/) {
    try_files $uri $uri/ =404;
    index index.php;
}

}
and here is my nginx.conf

log_format anonymized '$ip_anonymized - $remote_user [$time_local] ’
'"$request" $status $body_bytes_sent ’
β€˜"$http_referer" β€œ$http_user_agent”’;

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;

}
is therr anything im missing?

Hey,

have you tried the nginx configuration provided here? For me this works without any such issues. :slightly_smiling_face:

1 Like

didnt help still same

Hey BardiaF_YT

I had exactly the same issue which made me almost insane. I have verified that all CSS and JS files are accessible in the browser first and they have been fine. I had that issue until I added nginx mime types right beneath the server_name. I can see you have mime types defined in your config but not sure if that is in right order. Let me share my config which works now as expected:

    server {

    server_name  owncloud.mydomain.org;
    include      /etc/nginx/mime.types;

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/owncloud.mydomain.org-0001/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/owncloud.mydomain.org-0001/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot


    add_header X-Content-Type-Options nosniff always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header X-Robots-Tag none always;
    add_header X-Download-Options noopen always;
    add_header X-Permitted-Cross-Domain-Policies none always;

    root /var/www/owncloud;

    location = /robots.txt {
      allow all;
      log_not_found off;
      access_log off;
    }

    location = /.well-known/carddav {
      return 301 $scheme://$host/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host/remote.php/dav;
    }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 8 4K;                     # Please see note 1
    fastcgi_ignore_headers X-Accel-Buffering; # Please see note 2

    # Disable gzip to avoid the removal of the ETag header
    # Enabling gzip would also make your server vulnerable to BREACH
    # if no additional measures are done. See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773332
    gzip off;


    location / {
        rewrite ^ /index.php$uri;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        return 404;
    }
    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        return 404;
    }


  location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|ocm-provider/.+|core/templates/40[34])\.php(?:$|/) {
      fastcgi_split_path_info ^(.+\.php)(/.*)$;
      include fastcgi_params;
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      fastcgi_param SCRIPT_NAME $fastcgi_script_name; # necessary for owncloud to detect the contextroot https://github.com/owncloud/core/blob/v10.0.0/lib/private/AppFramework/Http/Request.php#L603
      fastcgi_param PATH_INFO $fastcgi_path_info;
      fastcgi_param HTTPS on;
      fastcgi_param modHeadersAvailable true; #Avoid sending the security headers twice
      fastcgi_param front_controller_active true;
      fastcgi_read_timeout 180; # increase default timeout e.g. for long running carddav/ caldav syncs with 1000+ entries
      
      fastcgi_pass unix:/run/php7.4-fpm.sock;
      
      fastcgi_intercept_errors on;
      fastcgi_request_buffering off; #Available since NGINX 1.7.11
  }

  location ~ ^/(?:updater|ocs-provider|ocm-provider)(?:$|/) {
      try_files $uri $uri/ =404;
      index index.php;
  }

  # Adding the cache control header for js and css files
  # Make sure it is BELOW the PHP block
  location ~ \.(?:css|js)$ {
      try_files $uri /index.php$uri$is_args$args;
      ##add_header Cache-Control "max-age=15778463";
      ### Add headers to serve security related headers (It is intended to have those duplicated to the ones above)
      ### The always parameter ensures that the header is set for all responses, including internally generated error responses.
      ### Before enabling Strict-Transport-Security headers please read into this topic first.
      ### https://www.nginx.com/blog/http-strict-transport-security-hsts-and-nginx/
      add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload" always;
      add_header X-Content-Type-Options nosniff always;
      add_header X-Frame-Options "SAMEORIGIN" always;
      add_header X-XSS-Protection "1; mode=block" always;
      add_header X-Robots-Tag none always;
      add_header X-Download-Options noopen always;
      add_header X-Permitted-Cross-Domain-Policies none always;
      access_log on;
  }

  location ~ \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg|map|json)$ {
      ##add_header Cache-Control "public, max-age=7200";
      try_files $uri /index.php$uri$is_args$args;
      # Optional: Don't log access to other assets
      access_log on;
  }

}

server {
if ($host = owncloud.mydomain.org) {
return 301 https://$host$request_uri;
} # managed by Certbot

Using nginx since years with multiple instances (domains) successfully. You may find some solutions at GitHub - mmattel/nginx-setup: nginx setup files You can drop the wordpress stuff as it is not relevant for your environment

1 Like