若依微服务-spring-cloud配置HTTPS访问及SSL证书,保姆级,带详细说明

本文介绍了如何在保持用户无感知的前提下,将微服务架构中的HTTP请求转换为HTTPS,并详细阐述了如何利用Nginx作为代理服务器,配置SSL证书以确保安全连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.场景:安全需要,将原微服务架构的http转为https,并且对已有用户无感;及客户在访问http://a.aa.com时自动转为:https://a.aa.com

2.实现:由于前后端完全分离,使用Nginx做代理,证书选择nginx的SSL证书;

3.nginx配置如下:Linux生产环境自动更改证书目录位置即可,以下实例为windows测试环境,亲测成功;

worker_processes  1;

events {
    worker_connections  2048;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  650;
gzip on;
# 不压缩临界值,大于1K的才压缩,一般不用改
gzip_min_length 1k;
# 压缩缓冲区
gzip_buffers 16 64K;
# 压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_http_version 1.1;
# 压缩级别,1-10,数字越大压缩的越好,时间也越长
gzip_comp_level 5;
# 进行压缩的文件类型
gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
# 跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
gzip_vary on;
# IE6对Gzip不怎么友好,不给它Gzip了
gzip_disable "MSIE [1-6]\.";
server_names_hash_bucket_size   128;
        client_header_buffer_size       32k;
        large_client_header_buffers     4 32k;
        client_max_body_size            300m;
        tcp_nopush                      on;
        tcp_nodelay                     on;
        client_body_buffer_size         512k;
        proxy_connect_timeout           180;
        proxy_read_timeout              3000;
        proxy_send_timeout              3000;
        proxy_buffer_size               256k;
        proxy_buffers                   4 256k;
        proxy_busy_buffers_size         256k;
        proxy_temp_file_write_size      256k;
        proxy_hide_header               X-Powered-By;
        server_name_in_redirect         off;
        map_hash_bucket_size            1024;
        map_hash_max_size               102400;
        charset                         utf-8;
##证书配置
    server {
        listen       443 ssl;
        server_name  testgdc.paiang.com;
		ssl_certificate      E://nginx-1.25.1//conf//cert//xxxx.xxx.com.pem;  
		ssl_certificate_key    E://nginx-1.25.1//conf//cert//xxxx.xxx.com.key;
		ssl_session_cache shared:SSL:1m;
		ssl_session_timeout 5m;
		#ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
		ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
		ssl_prefer_server_ciphers off;
		charset utf-8;
##这里是前端资源地址
		location / {
            root   E:\dist;
			try_files $uri $uri/ /index.html;
            index  index.html index.htm;
			error_page 405 =200  $request_uri;
        }
		##这里是前端到后端网关的跳转处理逻辑
		location /prod-api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:8080/;
			error_page 405 =200  $request_uri;
		}

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
	server {
   listen 80;
  #填写证书绑定的域名,这几句作用是将http无感转为https;
    server_name ****.****.com;   ##这里替换为你得域名
   # #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    rewrite ^(.*)$ https://$host$1;
    location / {
        index index.html index.htm;
    }
  }

}

对于Spring Cloud项目的部署,可以采用以下步骤: 1. 准备环境:首先确保服务器上已经安装了Java运行环境和相关依赖。可以使用Docker容器化技术来快速搭建开发环境。 2. 编译打包:将Spring Cloud项目编译打包成可执行的jar包或war包。可以使用Maven或Gradle进行构建。 3. 配置文件:根据项目需要,编写相应的配置文件,比如application.properties或application.yml,配置数据库连接、端口号等信息。 4. 启动服务:使用命令行或脚本来启动Spring Cloud服务。可以使用nohup命令将服务放在后台运行。 5. 健康检查:确保服务正常运行后,可以使用健康检查工具(如Actuator)来监控服务状态。 6. 负载均衡:如果需要进行负载均衡,可以使用Nginx等反向代理工具来实现。 7. 日志管理:配置日志系统,记录和管理项目的日志信息。可以使用ELK(Elasticsearch + Logstash + Kibana)等工具进行日志集中管理和分析。 8. 监控与调优:使用监控工具(如Prometheus、Grafana)来收集和展示系统运行指标,并进行性能调优和故障排查。 9. 安全加固:根据实际需求,配置相关的安全策略,如防火墙、SSL证书等,保障系统的安全性。 10. 自动化部署:可以使用CI/CD工具(如Jenkins、GitLab CI/CD)实现自动化部署,提高部署效率和稳定性。 以上是一个简要的部署步骤,根据具体项目和环境的不同,可能会有一些细节上的差异。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cai_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值