Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Nginx为子目录中的静态文件提供服务_Nginx_Static_Subdirectory - Fatal编程技术网

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

使用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

我目前在域名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;
  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”是的,我知道了,但不幸的是,我不知道从哪里开始