Hi, Nginx is returning 404 because it could not find my .js and .css files

Posted January 14, 2019 31.8k views
DockerUbuntu 16.04

i logged into the container and i see those files inside static directory


server {
listen 8080;
server_name localhost;

#charset koi8-r;
#access_log  /var/log/nginx/host.access.log  main;

location / {
    root   /usr/share/nginx/html;
    try_files $uri $uri/ /index.html;
    index  index.html index.htm;

#error_page  404              /404.html;

# redirect server error pages to the static page /50x.html
error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   /usr/share/nginx/html;

location ~ (js|css|img) {
  try_files $uri =404;

# pass the PHP scripts to FastCGI server listening on
#location ~ \.php$ {
#    root           html;
#    fastcgi_pass;
#    fastcgi_index  index.php;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
#    include        fastcgi_params;

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#location ~ /\.ht {
#    deny  all;



RUN rm -rf /etc/nginx/conf.d/default.conf
COPY ./default.conf /etc/nginx/conf.d/
COPY ./build/ /usr/share/nginx/html
RUN touch /var/run/ && \
  chown -R 1001:1001 /var/run/ && \
  chown -R 1001:1001 /var/cache/nginx && \
  chmod -R 777 /var/log/nginx /var/cache/nginx/ && \
  chmod -R 777 /etc/nginx/* && \


These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

Submit an Answer
4 answers

@Mohsen47 i did as you suggested but same result and i don’t see sites-available and sites-enabled directories in /etc/nginx/ when i logged into the container

  • These two folders should exist in any nginx installation, make sure Nginx is installed inside the container if not install it with sudo apt install nginx -y and try again.


You need to put default.conf in /etc/nginx/sites-available and create a symlink for it from /etc/nginx/sites-enabled change the second line from Dockerfile as follows:

COPY ./default.conf /etc/nginx/sites-available
RUN ln -s /etc/nginx/sites-available/default.con /etc/nginx/sites-enabled

Then try again.

hope this helps.

@Mohsen47 issue resolved, i had to explicitly mention the /usr/share/nginx/html in location block

location ~ (css|js|img) {
root /usr/share/nginx/html;
try_files $uri $uri/ =404;

i am using nginx :alphine as the base image so nginx should be there by default, i am gonna check on it and revert back.