SpringBoot Tomcat 配置https 且443端口也是https(若依为例对接微信小程序的https,小程序也可以访问)
SpringBoot Tomcat 配置https 且443端口也是https(若依为例对接微信小程序的https,小程序也可以访问)
1 服务器去下载免费的证书(选在tomcat jks版本的)
2 将下载的证书移动到resources目录下
3 改写yml配置文件 9898 为https 对应的端口 key-store中注释的为你的域名 key-password为刚刚下载的第二个txt文件中的内容 key-store-password和key-password是一样的 key-alias 为你自己的域名
4 在启动类中添加属性和配置方法
// http 请求端口,线上配置为 8080
@Value("${server.port-http}")
private int serverPortHttp;
// 服务器运行端口,等同于 HTTPS 请求端口,线上 9898
@Value("${server.port}")
private int serverPortHttps;
/**
* http重定向到https
*/
@Bean
public TomcatServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat;
tomcat = new TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint constraint = new SecurityConstraint();
constraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
constraint.addCollection(collection);
context.addConstraint(constraint);
}
};
tomcat.addAdditionalTomcatConnectors(httpConnector());
return tomcat;
}
@Bean
public Connector httpConnector() {
Connector connector = new Connector(Http11NioProtocol.class.getName());
connector.setScheme("http");
//Connector监听的http的端口号
connector.setPort(serverPortHttp);
connector.setSecure(false);
//监听到http的端口号后转向到的https的端口号
connector.setRedirectPort(serverPortHttps);
return connector;
}
5 编写docker file
FROM openjdk:8
# 维护者
MAINTAINER cdy<2096883491@qq.com>
# copy jar包 命名为 aap.jar
COPY *.jar /app.jar
# 暴露端口
EXPOSE 9898
# 启动 jar包 可通过 PARAM 配置启动参数
ENTRYPOINT ["java","-jar","/app.jar"]
6 用idea打包成jar包
7 用docker打包成镜像
9 启动容器 jike:3.0为刚刚构建的镜像名称
10 nginx中做好配置
worker_processes 1;
events {
worker_connections 1024;
}http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;server {
listen 80;
#请填写绑定证书的域名
server_name youhostname;
#把http的域名请求转成https
return 301 https://$host$request_uri;
}server {
#SSL 默认访问端口号为 443
listen 443 ssl;
#请填写绑定证书的域名
server_name youhostname;
#请填写证书文件的相对路径或绝对路径
ssl_certificate /etc/nginx/ssl/youhostname_bundle.crt;
#请填写私钥文件的相对路径或绝对路径
ssl_certificate_key /etc/nginx/ssl/youhostname.key;
ssl_session_timeout 5m;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
location / {
#网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
#例如,您的网站主页在 Nginx 服务器的 /etc/www 目录下,则请修改 root 后面的 html 为 /etc/www。
root /usr/share/nginx/html/dist;
try_files $uri $uri/ /index.html;
index index.html index.htm;
}# 默认所有路径
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_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;
# 反向代理配置
proxy_pass https://youhostname:9898/;
}error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include /etc/nginx/conf.d/*.conf;
}
11 前端在vue.config.js中可以修改为htpps:youhostnameL9898 微信小程序中也可以进行修改,都是符合https的
更多推荐
所有评论(0)