使用 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 文件)
我目前在域名 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 文件)