2017-01-21 11 views
1

Я хочу настроить prerender для моего SPA. Prerender - это приложение node.js, которое также работает на Jelastic. Я использую статический хостинг файлов для размещения моего SPA.Как установить прокси-сервер nginx на другую услугу на Jelastic

Я хочу передать все запросы от обычных пользователей на мой сайт на статический хостинг файлов и передать все запросы от поисковых роботов до prerender.

Чтобы выполнить это, я пытаюсь настроить следующий конфиг взятого из пререндера сайта:

user nginx; 
worker_processes auto; 
worker_rlimit_nofile 2048; 

error_log /var/log/nginx/error_log info; 

events { 
     worker_connections 2048; 
     use epoll; 
} 

http { 

    include    /etc/nginx/mime.types; 
    default_type  application/octet-stream; 

    upstream static-hosting { 
    server my-site.hosting.com; 
    } 

    server { 
    listen 80; 

    location/{ 
     try_files $uri @prerender; 
    } 

    location @prerender { 
     set $prerender 0; 
     if ($http_user_agent ~* "googlebot|bingbot|googlebot-mobile|baiduspider|twitterbot|facebookexternalhit|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator") { 
     set $prerender 1; 
     } 
     if ($args ~ "_escaped_fragment_") { 
     set $prerender 1; 
     } 
     if ($http_user_agent ~ "Prerender") { 
     set $prerender 0; 
     } 
     if ($uri ~* "\.(js|css|xml|less|png|jpg|jpeg|gif|pdf|doc|txt|ico|rss|zip|mp3|rar|exe|wmv|doc|avi|ppt|mpg|mpeg|tif|wav|mov|psd|ai|xls|mp4|m4a|swf|dat|dmg|iso|flv|m4v|torrent|ttf|woff|svg|eot)") { 
     set $prerender 0; 
     } 

     if ($prerender = 1) { 
     set $prerender "10.50.7.128:3000"; # this is my node.js node api 
     rewrite .* /static/http://$host$request_uri? break; 
      proxy_pass http://$prerender; 
     } 
     if ($prerender = 0) { 
     proxy_pass http://static-hosting ; 
     } 
    } 
    } 

} 

Не удивляйся, но это не работает, ни прямо проксирование, ни переходя к пререндеру. Именно эта конфигурация прекрасно работает в моих других конфигурациях, работающих на обычных VPS'ах.

Мои вопросы:

  1. Что я делаю неправильно?

  2. Как сообщить прокси-серверу nginx передавать запросы любому доступному узлу prerender, если я хочу использовать функции автомасштабирования?

ответ

0

Возможно, основная причина в заголовках. Когда вы работаете без публичного IP-адреса, вы используете обратный прокси-сервер платформы. Вы можете найти примеры работы с заголовками в файле /etc/nginx/nginx-jelastic.conf. Кроме того, вы можете включить публичный IP-адрес для узла nginx.

+0

Прямое проксирование тоже не работает, поэтому я сомневаюсь, что проблема связана с заголовками. Aldo, я не хочу включать публичный IP-адрес, потому что это не нужно в моем случае. Спасибо, спасибо. –

+0

Хорошо, дайте мне знать, помогло это или нет. –