nginx+tomcat+ssl+负载均衡

一、startssl证书申请 请参考如下链接

http://www.zntec.cn/archives/startssl.html

最终生成四个文件:

ssl.key

ssl.crt

ca.pem

sub.class1.server.ca.pem


二、nginx+tomcat配置

http://m.blog.csdn.net/blog/andywu201002/39027121

注:只需要配置nginx接收https请求,在分发到tomcat是仍使用http

1、Nginx 配置

SSL 的目的是为了保证网络通信的安全以及数据完整性。所以,如果 tomcat 前面有了 nginx 作为反向代理,那就没有理由再在 nginx 和 tomcat 之间进行加密传输,毕竟二者处于同一内网。

如上图所示,客户端通过 SSL 请求过来的访问被反向代理 nginx 接收,nginx 结束了 SSL 并将请求以纯 HTTP 提交 tomcat。nginx 配置 nginx.conf增加如下内容: 

upstream https_proxy {

#server 42.96.138.56:443 max_fails=0;

#server 42.96.138.56:80 max_fails=0;

server 192.168.231.224:8080 max_fails=0;

} 

server {

listen 443 ssl;

server_name www.zhoufengjie.cn zhoufengjie.cn;

 

ssl on;

ssl_certificate     /usr/local/nginx/ca/server/server.crt;

ssl_certificate_key /usr/local/nginx/ca/server/server.key;

ssl_client_certificate /usr/local/nginx/ca/private/ca.crt;

 ssl_session_timeout 5m;

ssl_verify_client on; #开户客户端证书验证

 ssl_protocols SSLv2 SSLv3 TLSv1;

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

ssl_prefer_server_ciphers   on;

 

charset utf-8;

 

location / {

proxy_redirect off;

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

#proxy_set_header Accept-Encoding “”;

add_header Power-By-Tyumen “$upstream_cache_status from $hostname”;

 

proxy_pass http://https_proxy;

proxy_buffers 256 4k;

proxy_max_temp_file_size 0;

proxy_connect_timeout 30;

proxy_read_timeout 600;

}

 access_log /data/logs/https_proxy.log custom_log;

}

 2、tomcat配置

Nginx 反向代理 HTTP 不需要更改 Tomcat 配置。与 HTTP 代理不同的是,这里需要通过更改 tomcat 的配置文件来告诉它前面的 HTTPS 代理。将 %tomcat%/conf/ 以下部分:

 

<Connector port=”8080″ protocol=”HTTP/1.1″

connectionTimeout=”20000″

redirectPort=”8443″/>
修改为

<Connector port=”8080″ protocol=”HTTP/1.1″

connectionTimeout=”20000″

redirectPort=”8443″

scheme=”https”

proxyName=”www.zhoufengjie.cn”

proxyPort=”443″ />


遇到问题:

在配置nginx的ssl过程中,查看其日志,报如下错误,导致不能转发到tomcat服务器

nginx: [emerg] SSL_CTX_use_PrivateKey_file("/usr/local/nginx/conf/ssl.key/server.key") 
failed (SSL: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt 
error:0906A065:PEM routines:PEM_do_header:bad decrypt error:140B0009:SSL routines:
SSL_CTX_use_PrivateKey_file:PEM lib)
经查询分析,其原因是key文件加密方式不对,得使用rsa加密处理一下,执行以下两句就OK:

#cp server.key server.key.org
#openssl rsa -in server.key.org -out server.key



猜你喜欢

转载自blog.csdn.net/permanent_2008/article/details/45420501