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

Псевдоним Nginx не работает

Я пытаюсь пропустить весь трафик на месте ^/[a-z0-9]{24}$в index.html из другого корневого каталога. Моя конфигурация настроена так:

server {
    listen 80;
    server_name example.com;
    return 301 https://$host$request_uri;
}

server {

    listen 443 ssl;

    server_name example.com;
    root /Users/me/sites/store_front/static;
    index index.html;

    try_files $uri $uri/ $uri.html =404;

    location ~ "^/[a-z0-9]{24}$" {
        alias /Users/me/web_app/static;
        try_files $uri index.html;
    }
}

По какой-то причине, когда я скручиваю этот URL, я получаю 404:

$ curl -I https://example.com/55c898e7faa137f42409d403

HTTP/1.1 404 Not Found
Server: nginx/1.8.0
Content-Type: text/html; charset=UTF-8
Content-Length: 168
Connection: keep-alive

Кто-нибудь знает, как заставить работать этот псевдоним?

Обновить:

Одно предостережение заключается в том, что мне нужно, чтобы все относительные URL-адреса в index.html загружались правильно:

<link href="/styles/main.css" rel="stylesheet" type="text/css"
<script src="/javascript/main.js"></script>

Эти файлы действительно существуют в web_app каталог, но nginx пытается загрузить их из store_front

Спасибо

Указывая ^/[a-z0-9]{24}$ к index.html это легко. Файлы ресурсов /styles/main.css и /javascript/main.js необходимо иметь уникальные URI, иначе nginx не знает, какие файлы обслуживать.

Если /styles и /javascript префикс также используется store_front, вам нужно будет изолировать отдельные файлы:

location = /styles/main.css {
    root /Users/me/web_app/static;
}
location = /javascript/main.js {
    root /Users/me/web_app/static;
}
location ~ "^/[a-z0-9]{24}" {
    root /Users/me/web_app/static;
    rewrite ^ /index.html break;
}

Если /styles, /javascript и ^/[a-z0-9]{24}$ Все URI уникальны, вы можете объединить приведенное выше в одном месте:

location ~ "^/([a-z0-9]{24}|styles|javascript)" {
    root /Users/me/web_app/static;
    rewrite "^/[a-z0-9]{24}$" /index.html break;
}

Или даже:

location ~ "^/([a-z0-9]{24}|styles/main.css|javascript/main.js)" {
    root /Users/me/web_app/static;
    rewrite "^/[a-z0-9]{24}$" /index.html break;
}