Tomcat+Nginx配置HTTPS

752 阅读1分钟

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


1.准备SSL证书

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

①什么是SSL证书

②准备过程

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


2.具体配置

①强制HTTPS(可选)

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

②开启HTTPS

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;
    }
}
  • 配置成功:


3.工作原理

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


附录