使用 Nginx 为子目录中的静态文件提供服务

Using Nginx to serve a static files in a subdirectory

我目前在域名 khairulslt.me(来自 NameCheap)上有一堆工作静态文件。最近,我尝试设置一个子域 (khairulslt.me/RGBGame),如下面的代码所示;但是,我不断收到 404 错误。我错过了什么?

server {
  listen 80;

  index circles.html;
  server_name khairulslt.me www.khairulslt.me;

  location / {
  root /var/www/khairulslt.me;
  add_header 'Cache-Control' 'no-store, no-cache, must-revalidate, proxy- 
  revalidate, max-age=0';
  expires off;
  }

  location /RGBGame {
  alias /var/www/RGBGame/colorGame.html;
  index colorGame.html;
  }
}

PS:我想在我用于 circles 应用程序的同一个 Digital Ocean droplet 下将新文件作为工作网络应用程序提供。

您不需要提供文件路径,而是别名指令中的目录。

所以只需使用:

location /RGBGame/ { 
    alias /var/www/RGBGame/; 
    index colorGame.html; 
}

您的别名似乎指向一个文件colorGame.html试试这个:

server {
  listen 80;

  server_name khairulslt.me www.khairulslt.me;


  location /RGBGame/ {
     alias /var/www/RGBGame/;
  }
}

使用 alias 时,对 ://khairulslt.me/RGBGame/file.foo 的请求将从以下位置提供文件:

/var/www/RGBGame/file.foo

例如,您可以使用 root(将位置附加到路径):

  location /RGBGame/ {
     root /var/www/khairulslt.me/;
  }

在这种情况下,对 ://khairulslt.me/RGBGame/file.foo 的请求将从以下位置提供文件:

/var/www/khairulslt.me/RGBGame/file.foo

解决了。 需要在此处更改此代码块:

location /RGBGame {
root /var/www/khairulslt.me;
index colorGame.html;
try_files $uri $uri/ /var/www/RGBGame/colorGame.html?q=$uri&$args;
autoindex off;
}

将在此处留下我的最终配置,以防对任何人有帮助:

server {

  server_name khairulslt.me www.khairulslt.me;

  autoindex off;
  location / {
    root /var/www/khairulslt.me;
    index circles.html;
  }


listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/khairulslt.me/fullchain.pem; # managed by 
Certbot
ssl_certificate_key /etc/letsencrypt/live/khairulslt.me/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

location /RGBGame {
    root /var/www/khairulslt.me/RGBGame;
    index colorGame.html;
    try_files $uri $uri/ /var/www/RGBGame/colorGame.html?q=$uri&$args;
    autoindex off;
  }

location /robots.txt { return 200 "User-agent: *\nDisallow: /\n"; 
  }

}

 server {
if ($host = www.khairulslt.me) {
    return 301 https://$host$request_uri;
  } # managed by Certbot


if ($host = khairulslt.me) {
    return 301 https://$host$request_uri;
  } # managed by Certbot


listen 80;
server_name khairulslt.me www.khairulslt.me;
return 404; # managed by Certbot
}

此配置的作用:

1) 在 URL khairulslt.me

处提供静态文件、Web 应用 #1,也就是一堆 html/css/js 文件)

2) 在 URL khairulslt.me/RGBGame

提供第二组静态文件,Web App #2,也就是一堆 html/css/js 文件)