这里记录一下使用Ngin X作为反向代理连接TOMCAT集群,并配置通过HTTPS进行连接。
说一下我的环境:3台server,都是ubuntu 14.04 server。
1.安装Ngin X
使用如下命令安装NginX
sudo apt-get install nginx
2.配置SSL访问Ngin X
2.1 生成证书和密钥文件
我们使用openssl工具来生成密钥和证书文件。这里参考了其它人的博客:
(1)首先使用如下命令生成私钥文件
openssl genrsa -des3 -out server.key 1024
(2)再使用如下命令生成csr(证书签发请求)文件,这个命令会让你填写一些个人和单位的信息
openssl req -new -key server.key -out server.csr
(3)使用如下命令将原来的私钥拷贝,并生成一个不需要输入密码的私钥文件
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
(4)使用如下命令,签发一个自己签名的crt证书文件
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
2.2 配置/etc/nginx/sites-enabled/default文件
在文件中添加如下的代码:注意修改ssl_certificate和ssl_certificate_key和root。
server {
listen 443;
server_name localhost;
root /usr/share/nginx/html;
index index.html index.htm;
ssl on;
ssl_certificate /home/cyber_space/KEYS/server.crt;
ssl_certificate_key /home/cyber_space/KEYS/server.key;
ssl_session_timeout 5m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
location / {
try_files $uri $uri/ =404;
}
}
保存完后,可使用如下命令来重新加载nginx服务器的配置文件
sudo /etc/init.d/nginx reload
之后,可在浏览器里输入https://服务器IP/ 来访问你的服务器,浏览器可能提示证书信任风险,添加到例外即可,如果成功了,就说明已经正确配置SSL/TSL了。
3.配置Ngin X负载均衡转发
配置/etc/nginx/sites-enabled/default文件。这里,注意要把root和index删除。
upstream backend{
least_conn;
server namenode:8080 weight=1; #slow_start=10s;
server cloud2:8080 weight=2; #slow_start=10s;
}
server {
listen 443;
server_name localhost;
#root /usr/share/nginx/html;
#index index.html index.htm;
ssl on;
ssl_certificate /home/cyber_space/KEYS/server.crt;
ssl_certificate_key /home/cyber_space/KEYS/server.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:10m;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
ssl_prefer_server_ciphers on;
proxy_ssl_session_reuse on;
location / {
proxy_pass http://backend;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect off;
proxy_connect_timeout 240;
proxy_send_timeout 240;
proxy_read_timeout 240;
}
}
保存配置文件后,使用如下命令,更新服务器即可
sudo /etc/init.d/nginx reload