我创建了一个NodeBalancer来通过HTTP在Tomcat服务器上路由我的请求。我看到NodeBalancer做得很好,但现在我必须安装Nginx服务器到服务器静态联系,以及反向代理,以将我的http流量重定向到HTTPS。
我有一个下面的场景--
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.现在,如果我需要为所有静态内容提供服务,比如(images/|img/|javascript/|js/|css/|stylesheets/),那么在通过NodeBalance将所有的HTTPS请求转发到为Tomcat提供服务的Tomcat之前,我需要通过Nginx转发它们来为静态内容提供服务。
我可以通过将NodeBalncer指向Nginx来做到这一点,但是对于Tomcat集群呢?因为NodeBalancer总是会将所有的HTTPS请求转发给Nginx,而我必须使用Nginx来维护会话粘性,这非常类似于通过Nginx实现的LoadBalancing。我看到所有的事情都可以通过Nginx服务器本身来完成。我可以直接使用Nginx,而不是终止所有用户对NodeBalancer的请求。
我确实通过安装Nginx和将HTTPS重定向到HTTPS,以及独立地提供静态内容来执行一些场景,但我坚持使用提供的NodeBalancer来服务于我的目的。我计划放弃Linode NodeBalncer,使用Nginx作为LoadBalancer以及服务静态内容。
寻找一些专家对此的建议/评论,如果我的方法是错误的,也可以建议我。
发布于 2016-04-03 11:25:15
提供静态内容和重定向到https是两个不同的问题。您的一般方法听起来很好。就我个人而言,我会使用Nginx做任何事情,并丢失NodeBalancer,但这只是一个个人网站。如果这是为了业务,那么你需要考虑监控等,而NodeBalancer可能会提供一些你想要保留的特性。
将所有来自NodeBalancer的流量发送到Nginx,并使用Nginx作为负载均衡器和终止所有SSL流量。下面是一个终止SSL并提供图像服务的简单示例。在本例中,我们将所有流量路由到端口80上的tomcat上游服务器,该服务器使用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负载平衡可能是最容易设置的。
https://stackoverflow.com/questions/35121165
复制相似问题