题库
比赛
近期比赛
排名
话题
在线编译器
登录
话题
写新话题
Springboot docker容器方式部署https站点,同时http自动重定向到https
HappyOJ
发布于
1 年前
19975
0
0
springboot
https
happyoj
docker
配置文件: ![1683955193277.png](/upload/image/20230513/20230513131952_4F88DEEF0882E38F39F0E3A82C699F68.png) ```yaml server: port: 8443 redirect-https-port: 443 -----》由于我是用docker容器部署,所以这里重定向是主机端口号 redirect-https-enable: true http-port: 8080 ssl: key-store: classpath:happyoj.com.pfx key-store-password: 证书密码 key-store-type: PKCS12 ``` 代码中新增Redirect2HttpsConfig类执行重定向: ```java package com.oj.config; import lombok.extern.slf4j.Slf4j; import org.apache.catalina.Context; import org.apache.catalina.connector.Connector; import org.apache.tomcat.util.descriptor.web.SecurityCollection; import org.apache.tomcat.util.descriptor.web.SecurityConstraint; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Slf4j @Configuration public class Redirect2HttpsConfig { private static Integer httpPort; @Value("${server.http-port}") public void setHttpPort(Integer httpPort){ Redirect2HttpsConfig.httpPort = httpPort; } private static Integer httpsPort; @Value("${server.redirect-https-port}") public void setHttpsPort(Integer httpsPort){ Redirect2HttpsConfig.httpsPort = httpsPort; } private static boolean httpsEnable; @Value("${server.redirect-https-enable}") public void setHttpsEnable(boolean httpsEnable){ Redirect2HttpsConfig.httpsEnable = httpsEnable; } @Bean(name = "connector") public Connector connector() { Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); connector.setScheme("http"); connector.setPort(httpPort); connector.setSecure(false); connector.setRedirectPort(httpsPort); return connector; } @Bean public TomcatServletWebServerFactory tomcatServletWebServerFactory(Connector connector) { TomcatServletWebServerFactory tomcat; if (httpsEnable == false) { tomcat = new TomcatServletWebServerFactory(); } else { tomcat = new TomcatServletWebServerFactory() { @Override protected void postProcessContext(Context context) { SecurityConstraint securityConstraint = new SecurityConstraint(); securityConstraint.setUserConstraint("CONFIDENTIAL"); SecurityCollection collection = new SecurityCollection(); collection.addPattern("/*"); securityConstraint.addCollection(collection); context.addConstraint(securityConstraint); } }; } tomcat.addAdditionalTomcatConnectors(connector); return tomcat; } } ``` 浏览器输入http://happyoj.com 将自动跳转到 https://happyoj.com ![1683955317406.png](/upload/image/20230513/20230513132156_FC7B7FB6182398243022E5B1F0AB3D5C.png)
回复话题
Twitter
Hot Tags
dfs
22
implementation
19
dp
15
蓝桥
14
string
11
math
11
big number
10
number theory
9
combinatorics
9
happyoj
5
springboot
4
brute force
4
javascript
3
bfs
3
greedy
3
如梦令
3
divide and conquer
2
linux
2
Copilot
2
graph
2
probabilities
2
sortings
2
data structures
2
xor
2
python
1
telnetlib
1
cron
1
题解
1
docker
1
https
1
→
Top10
南柯
2023
cxlove
1970
vainner
1763
4
1000310428赵成帅
1718
5
XiaoWen
1710
6
1000380213洪伟焕
1701
7
weiben
1684
8
Jungle.Wei
1678
9
1100310131曾翔宇
1664
10
hongwh
1653
→
Topics
vbox Ubuntu无界面动态扩展磁盘空间
###问题:磁盘创建时时动态扩展方式,现在空间已经不足,却没有自动扩展生效磁盘空间
Problem A + B
略微有单简单
python 使用telnetlib登陆telnet服务器
```python
你好,请问如何在Windows下架设WEB?
大大你好,我是一个小白。
Python + openCV去除图片中红色字体
Github Copilot在代码检视内存泄漏上的能力
## 我给了一个带出参的由内存申请的函数,它能够识别函数内没有泄漏,但是需要提醒我调用者有没有释放内存,还是不错。
使用Github Copilot辅助开发的一些感受
## 我先选择了一段比较简单的代码,发现它给出的解释实际上就是代码本身自注释到的
Ubuntu 如何安装HappyOJ
## Table of contents
@Scheduled注解实现启动时延时60秒执行一次定时任务,后续按照cron定义的计划执行
最近遇到一个问题,通过springboot Scheduled定时调度,在启动时就会执行定时任务,导致启动性能较差。
【JS】JS设置粘贴板内容的方法
方法1:
→