Использование Nginx для обслуживания статических файлов в подкаталоге
В настоящее время у меня есть куча рабочих статических файлов на доменное имя 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: я хочу использовать новые файлы в качестве рабочего веб-приложения под той же каплей Digital Ocean, которую я использую для приложения кругов.
3 ответа
Решил это. Необходимо изменить этот блок кода здесь:
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) Служите статическим файлам, веб-приложению №1, известному как набор файлов html/css/js) по URL-адресу khairulslt.me
2) Служите второму набору статических файлов, веб-приложение № 2, известное как набор файлов html/css/js) по URL-адресу khairulslt.me/RGBGame.
Вам не нужно указывать путь к файлу, но нужно указать каталог в вашей директиве псевдонима.
Так что просто используйте:
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