2013-02-28 1 views
0

Я запускаю лак на EC2 перед nginx, который направляется к node.js.лак, nginx, & node.js: статические страницы nginx html с резервным узлом node.js

Я хочу, чтобы обслуживать определенные статические HTML-страницы с определенных маршрутов (например, / для index.html) через nginx, но все остальные маршруты обрабатываются node.js.

В качестве примера, / будет послан Nginx в виде статической HTML-страницы, пока ничего не соответствует, скажем /dynamic_stuff или /dynamic_stuff2, будут обработаны Node.js.

В других тонах онлайн другие люди устанавливали node.js в отдельном каталоге полностью, например /node/dynamic_stuff, но я не хотел иметь отдельный каталог для моей маршрутизации.

Сейчас у меня есть / служил вверх node.js как и все остальное, но если я только тестирование мой сервер Node.js и я беру его, я хотел бы / к Откат к версии Nginx из index.html. В этом случае, если мой сервер node.js снят, я получаю 502 Bad Gateway.

Я не слишком беспокоюсь о производительности от обслуживания файлов через nginx vs. node.js, я просто считаю, что я хочу, чтобы nginx обрабатывал базовые страницы, если node.js по какой-то причине сходит.

Соответствующий скрипт:

location =/{ 
    index index.html 
    root /path/to/public 
    try_files $uri $uri/ index.html; 
} 

location/{ 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-NginX-Proxy true; 
    proxy_pass node_js; 
} 

Если я использую этот код выше, все запросы по-прежнему отправляют в Node.js, включая /.

ответ

0

Я думаю, что проще всего сделать, если это просто index.html, чтобы установить индекс

index index.html 
root /path/to/public 

Все файлы в общедоступном каталоге теперь должны быть поданы с Nginx.

Теперь поместите этот index.html в общий каталог вашего узла. Остальное будет проксировано от nginx до экземпляра узла.

Конечно, вы можете просто поставить другой статический HTML в подкаталогах, если вы хотите:

public/about(index.html 
public/faq/index.html 
... 
+0

Если я что, она по-прежнему передает '/' в Node.js. Вот соответствующая часть из моего conf: location =/{ index index.html root/path/to/public try_files $ uri $ uri/index.html; } местоположение/{ proxy_set_header X-Real-IP $ remote_addr; proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header Host $ http_host; proxy_set_header X-NginX-Proxy true; proxy_pass http: // node_js /; } – Xeus

+0

Это немного трудно читать. Возможно, вы могли бы передать свой конфиг в свой вопрос как фрагмент кода. – topek

+0

Хорошо, все, спасибо! – Xeus

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