2016-02-01 4 views
1

У меня есть NodeBalancer, созданный для маршрутизации моего запроса на сервере Tomcat по HTTP. Я вижу, что NodeBalancer работает хорошо, но теперь мне нужно установить статический контакт сервера Nginx на сервер, а также обратный прокси перенаправить мой HTTP-трафик на HTTPS.Linode NodeBalancer Vs Nginx

У меня есть ниже scenario--

User-----via http---->NodeBalncer(http:80) ---->Nginx--->Redirect to HTTPS---->NodeBalancer(https:443)------> Tomcat on HTTP:8080 

Ниже приведен пример потока

1) User send a request using HTTP:80 
2) NodeBalancer received request on HTTP:80 and forward to Nginx 
3) Nginx redirect request to HTTPS 
4) Now NodeBalancer received request on HTTPS:443 and forward to Serving Tomcat on HTTP:8080 after terminating SSL on NodeBalancer. 

Теперь, если мне нужно, чтобы обслуживать все статического контента, как (изображений/|/| IMG JavaScript/| js/| css/| stylesheets /), то перед пересылкой всего HTTPS-запроса через NodeBalance для обслуживания Tomcat мне нужно переслать их через Nginx для обслуживания статического содержимого.

Я могу сделать это, указав NodeBalncer на Nginx, но тогда как насчет кластеризации Tomcat, потому что NodeBalancer всегда будет перенаправлять все запросы HTTPS на Nginx, и я должен поддерживать липкость сеанса с помощью Nginx, который в значительной степени похож на LoadBalancing через Nginx. Я вижу, что все можно сделать с помощью самого Nginx-сервера. Вместо того, чтобы завершать все запросы пользователя к NodeBalancer, я могу напрямую использовать Nginx.

Я выполнил некоторые сценарии, установив Nginx и перенаправляя HTTP на HTTPS и независимо предоставляя статический контент, но я застрял с предоставленным NodeBalancer, чтобы служить своей цели. Я планирую отказаться от Linode NodeBalncer и использовать Nginx как LoadBalancer, а также статический контент службы.

Глядя на некоторые советы экспертов/комментарии по этому поводу или предлагайте мне, если мой подход неправильный.

ответ

0

Обслуживание статического содержимого и перенаправление на https - это две разные проблемы. Ваш общий подход звучит прекрасно. Я лично буду делать все с помощью Nginx и потерять NodeBalancer, но это для личного сайта. Если это для бизнеса, вам необходимо рассмотреть возможность мониторинга и т. Д., И NodeBalancer может предоставить некоторые функции, которые вы хотите сохранить.

Отправлять весь трафик с NodeBalancer на Nginx и использовать Nginx как для балансировки нагрузки, так и для прекращения всего трафика SSL. Вот простые примеры, которые завершают SSL и служат изображениям. В этом случае мы маршрутизируем весь трафик на верхний сервер tomcat на порт 80, который сбалансирован по нагрузке с использованием IP-хеша, поэтому вы получаете липкие сеансы. Здесь вы добавляете балансировку нагрузки.

upstream tomcat { 
    ip_hash; 
    server 192.168.1.1:80; 
    server 192.168.1.2:80; 
    server 192.168.1.3:80; 
}  
server { 
    listen  443; 
    server_name www.example.org; 
    ssl on; 
    ssl_certificate  /etc/letsencrypt/live/example.org/fullchain.pem; 
    ssl_certificate_key /etc/letsencrypt/live/example.org/privkey.pem; 
    location/{ 
     proxy_cache example_cache; 
     proxy_set_header X-Forwarded-Proto https; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_set_header X-Forwarded-Host $host; 
     proxy_set_header Host    www.example.org:80; 
     proxy_pass_request_headers on; 
     proxy_pass http://tomcat; 
    }  
    location /images/ { 
     root /var/www/images/; 
     autoindex off; 
    } 
} 

Для достижения липких сеансов у вас есть несколько вариантов, которые вам нужно прочитать. Балансировка нагрузки по IP, вероятно, самая простая в настройке.