1.说明:
tomcat+nginx+ssl:nginx配置ssl,tomcat不需要配置ssl
tomcat+ssl:tomcat不需要配置ssl
2.先了解一下http和websocket:
3.再了解一下:客户端,nginx,tomcat,服务端的关系:
那我们开始配置吧!!!这里我只贴出来关键的配置。
4.nginx的配置:
第一步:把nginx的源码上传到linux系统
第二步:把压缩包解压缩。
第三步:进行configure。
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
--with-http_ssl_module
注意:上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录
第四步:
make
第五步:
make install
第六步:配置nginx.conf:在http里配置
###################################################
###注意这里修改为https不要与80冲突
###SSL###
server {
listen 443; #SSL 访问端口号为 443,https如果端口是443,浏览器会自动隐藏
server_name xxx; #填写绑定证书的域名
ssl on; #启用 SSL 功能
ssl_certificate xxx.crt; #证书文件
ssl_certificate_key xxx.key; #私钥文件
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置,使用的协议
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; #按照这个套件配置,配置加密套件,写法遵循 openssl 标准
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://tomcats;
index index.html index.htm;
# 启用支持websocket连接
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
upstream tomcats{ #配置负载均衡
server 127.0.0.1:8099 weight=1;
# server 127.0.0.1:8090 weight=1;
# server 127.0.0.1:8091 weight=1;
# server localhost:8090 weight=1;
# server localhost:8090 weight=1;
}
### 80端口 ###
server{
listen 80;
server_name xxx; #填写绑定证书的域名
return 301 https://$server_name$request_uri; #新方式:http强制为https,使用全站加密,HTTP 自动跳转 HTTPS
#老方式:rewrite ^(.*) https://$host$1 permanent;
}
####################################################
配置文件的主要参数说明如下:
- listen 443:SSL 访问端口号为 443
- ssl on:启用 SSL 功能
- ssl_certificate:证书文件
- ssl_certificate_key:私钥文件
- ssl_protocols:使用的协议
- ssl_ciphers:配置加密套件,写法遵循 openssl 标准
第七步:配置完成后检查nginx配置文件是否有错误
sbin/nginx –t
- 是,请重新配置。
- 否,重启 Nginx。
-
sbin/nginx -s reload
- 随即,即可使用
https://xxx
进行访问。
5.tomcat配置
<Connector port="8099" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<!-- ng里配置了ssl,tomcat就不需要配置ssl,如果只是tomcat+ssl则可以用如下配置,
但是,需要在tomcat的conf目录下引入jks文件,由.crt和.key文件生成。
这里提供一个转化的连接:https://www.myssl.cn/tools/merge-jks-cert.html
-->
<!--
<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
keystoreFile="conf/www.domain.com.jks"
keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />
-->
配置文件参数 |
说明 |
clientAuth |
如果设为 true,表示 Tomcat 要求所有的 SSL 客户出示安全证书,对 SSL 客户进行身份验证 |
keystoreFile |
指定 keystore 文件的存放位置,可以指定绝对路径,也可以指定相对于 <CATALINA_HOME> (Tomcat安装目录)环境变量的相对路径。如果此项没有设定,默认情况下,Tomcat 将从当前操作系统用户的用户目录下读取名为 “.keystore” 的文件。 |
keystorePass |
密钥库密码,指定 keystore 的密码。(如果申请证书时有填写私钥密码,密钥库密码即私钥密码,否则填写密钥库密码文件中的密码) |
sslProtocol |
指定套接字(Socket)使用的加密/解密协议,默认值为 TLS |
最后,部署并启动nginx和tomcat即可!
顺便说一句,如果有想看nginx+ssl+websocket请查阅我的其他博客的文章呦~