SpringBoot配置

application.properties/yml配置:

1
2
3
4
server.port=8080
server.tomcat.protocol_header=x-forwarded-proto
server.use-forward-headers=true
server.address=127.0.0.1

该配置将指示tomcat从HTTP头信息中去获取协议信息(而非从HttpServletRequest中获取),同时,如果你的应用还用到了spring-security则也无需再配置。

此外,虽然我们的tomcat被nginx反向代理,但仍可访问到其8080端口。为此增加server.address=127.0.0.1,这样一来其8080端口就只能被本机访问了。

阿里云申请免费的SSL证书

进入控制台,侧边栏=>安全(云盾)=>CA证书服务=>购买证书=>选择免费型DV SSL购买。

补全信息,选择什么的都默认的就好了,提交后等会就可以下载了。

选择下载证书for nginx,下载完上传到服务器。

nginx配置

nginx的根目录(和nginx.conf同级)下创建文件夹cert,用于存放证书xxxxx.pem和xxxxx.key。

nginx.conf配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 80; #监听80 http 重定向到https
server_name xxxxx.com www.xxxxx.com;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}

server {
listen 443 ssl; #监听443 https
server_name xxxxx.com www.xxxxx.com; #配置域名
ssl_certificate cert/xxxxx.pem; #配置证书位置
ssl_certificate_key cert/xxxxx.key; #配置证书位置
location / {
proxy_pass http://localhost:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
}
}

其他

注意防火墙开启80,443端口的访问,阿里云服务器可能需要配置安全组。