使用Nginx为子目录中的静态文件提供服务
我目前在域名khairulslt.me(来自namescape)上有一堆正在工作的静态文件。最近,我尝试设置一个子域(khairulslt.me/RGBGame),如下面的代码所示;然而,我不断收到404个错误。我错过了什么使用Nginx为子目录中的静态文件提供服务,nginx,static,subdirectory,Nginx,Static,Subdirectory,我目前在域名khairulslt.me(来自namescape)上有一堆正在工作的静态文件。最近,我尝试设置一个子域(khairulslt.me/RGBGame),如下面的代码所示;然而,我不断收到404个错误。我错过了什么 server { listen 80; index circles.html; server_name khairulslt.me www.khairulslt.me; location / { root /var/www/khairulslt.me
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:我想将新文件作为一个工作的web应用程序,与我在circles应用程序中使用的Digital Ocean droplet相同。您不需要提供文件的路径,但需要提供alias指令中的目录 因此,只需使用:
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
时,对的请求://kairulslt.me/RGBGame/file.foo
将提供以下文件:
/var/www/RGBGame/file.foo
/var/www/khairulslt.me/RGBGame/file.foo
例如,可以使用root
(将位置附加到路径):
在这种情况下,对://kairulslt.me/RGBGame/file.foo的请求将提供以下文件:
/var/www/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应用程序(即一堆html/css/js文件)
2) 在URL Khairolslt.me/RGBGame上提供第二组静态文件,Web App#2,也称为一堆html/css/js文件)已经尝试过,但仍然返回错误404:|您知道我是否需要执行任何其他指令来设置子目录吗?比如用快车定路线什么的?这是一个全新的问题,很抱歉这些新手的问题!谢谢已经尝试了别名和根变量,但仍然是404;我也不能删除index circles.html;在第3行中,否则将不会在browser@sgeza在定义的路径上有文件(图像)吗?是的,在定义的路径上有css/js/html文件,我从来没有定义过“在我的主khairulslt.me上运行它们以获得一个有效的想法检查你的access.log,你就会看到你的请求在文件系统59.189.202.117中的去向--[07/Jun/2018:13:39:06+0800]“get/RGBGame HTTP/1.1“404 209”-“Mozilla/5.0(Windows NT 6.1;Win64;x64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/66.0.3359.181 Safari/537.36”是的,我知道了,但不幸的是,我不知道从哪里开始