Назад | Перейти на главную страницу

Nginx переписывает местоположение внутри для обслуживания статического контента

Я пытаюсь обслуживать статический контент с конечной точки, иерархическая структура которой отличается от фактической структуры корневого каталога. Вот результат, которого я пытаюсь достичь:

0.0.0.0/Claw/scripts/main.js -> /home/ubuntu/Claw/public/scripts/main.js

Я использую следующую конфигурацию Nginx:

location ~ ^/Claw/(images/|styles/|scripts/) {
    root /home/ubuntu/Claw/public;
    access_log off;
    expires max;
}

Это не удается, поскольку /home/ubuntu/Claw/public/Claw/scripts/main.js не существует. Поэтому мне нужно удалить префикс Коготь с места внутри. Как я могу это сделать?

Мне нужна эта структура, чтобы я мог размещать несколько приложений Node с разных конечных точек в одном домене.

Попробуй это:

location ~ ^/Claw/(?<subdir>images|styles|scripts)/(?<file>.*) {
    alias /home/ubuntu/Claw/public/$subdir/$file;
    access_log off;
    expires max;
}

Кажется, что nginx не передает переменные, захваченные в пронумерованные переменные из location директива внутрь блока. Когда переменным даны имена, они работают.

Вы могли бы использовать alias директива для этого.

location ~ ^/Claw/(images|styles|scripts)/ {
    alias /home/ubuntu/Claw/public/$1/;
    access_log off;
    expires max;
}