2015-08-10 2 views
0

Существует следующая Nginx конфигурации:Nginx перенаправлять все запросы, кроме апи одного файла

server { 
    listen 80; 
    server_name orange.mwlab.co; 
    root /home/hotels-app/domains/orange_web_app; 
    location /api { 
    passenger_enabled on; 
    rails_env stage; 
    root /home/hotels-app/domains/orange_app/current/public; 
    } 

    location/{ 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_http_version 1.1; 
    } 
} 

Я хочу сделать следующее дело: все запросы, кроме запросов от API (/ API/...) перенаправления/home/hotels-app/domains/orange_web_app, потому что я сделал одностраничное приложение, и мне нужно вернуть статический index.html, кроме запросов API. Заранее спасибо!

ответ

0

Вы можете использовать try_files.

server { 
    listen 80; 
    server_name orange.mwlab.co; 
    root /home/hotels-app/domains/orange_web_app; 
    location /api { 
    passenger_enabled on; 
    rails_env stage; 
    root /home/hotels-app/domains/orange_app/current/public; 
    } 

    location/{ 
    proxy_set_header Upgrade $http_upgrade; 
    proxy_set_header Connection "upgrade"; 
    proxy_http_version 1.1; 
    try_files $uri $uri/ /index.html =404; 
    } 
} 

Обязательно используйте правильный путь для index.html.

Строка try_files $uri $uri/ /index.html =404; означает, что теперь все несуществующие url будут перенаправлены в файл index.html, но без переписывания url в адресной строке браузера.

Вот блог с большим количеством информации (это написано о angularjs, но большинство из них относится к какой-либо одной страницы приложения): http://senior-java-developer.com/html5angularjsnginx-crawlable-application/

Смежные вопросы