Tomcat+Nginx配置HTTPS

ps:每次修改配置后,需要重启 Nginx。
命令:systemctl restart nginx
Nginx 的配置文件:/etc/nginx/nginx.conf


1.相关博客


2.准备SSL证书

在域名备案的前提下,我们需要购买 SSL 证书。
一般情况下,购买免费版即可。

①什么是SSL证书

Alt text
Alt text

②准备过程

  • 进入阿里云控制台 购买免费版 SSL 证书
  • 然后在签发后下载 Nginx 服务器类型的证书并上传到服务器

Alt text
Alt text
Alt text
Alt text
Alt text


3.具体配置

①强制HTTPS(可选)

  • 把 HTTP 的域名请求转成 HTTPS
1
2
3
4
5
6
server {
listen 80;
server_name a.com; # 使用证书绑定的域名替换localhost
return 301 https://$server_name$request_uri;
# 返回301状态码进行跳转被Google认为是将网站地址由HTTP迁移到HTTPS的最佳方法
}

②开启HTTPS

Alt text

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
server {
listen 443 ssl; # 监听433端口
server_name a.com; # 证书绑定的域名
ssl on;
ssl_certificate /usr/local/javaweb/cert/2557101_a.com.pem; # 证书的文件名
ssl_certificate_key /usr/local/javaweb/cert/2557101_a.com.key; # 证书的密钥文件名
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;

location / {
proxy_pass http://127.0.0.1:8080; # 对应tomcat的端口号
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;
}
}
  • 配置成功

Alt text


4.工作原理

浏览器发送的请求是发送到 Nginx 的,Nginx 作为代理服务器再转发到 Tomcat,浏览器和 Nginx 之间以 HTTPS 协议传输数据,而 Nginx 和 Tomcat 之间通过 proxy_pass 以 HTTP 协议传输数据。
Nginx 是中间的代理服务器。


附录

0%