购买阿里云免费证书3个月
阿里云SSL证书管理
点击购买证书,并支付0元,相当于免费
创建证书
阿里云SSL证书管理
点击创建证书
信息填写 和 个人资料填写,写完提交,等待审核。
通过很快,平均签发时间:19分钟36秒,我的5分钟通过了。
通过之后,会自动在你的域名新增一条解析,不用管。域名控制台
手动部署证书
下载证书
阿里云SSL证书管理
点击证书列表操作栏
的下载
选择第一个nginx的证书,点击下载,得到2个文件
安装Nginx
Docker-Run命令部署Nginx
上传证书文件
创建cert文件夹,放入2个证书
1
|
mkdir ~/nginx/html/cert
|
nginx配置https访问
修改default.conf,然后重启nginx:docker restart nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# 禁用ip访问
server {
listen 80 default_server;
server_name _;
return 404;
}
server {
listen 443 default_server;
server_name _;
ssl_certificate /usr/share/nginx/html/cert/zxalive.com.pem;
ssl_certificate_key /usr/share/nginx/html/cert/zxalive.com.key;
return 404;
}
server {
listen 80;
listen 443 ssl http2;
server_name zxalive.com www.zxalive.com;
root /usr/share/nginx/html/zxalive/public; # nginx容器内部的目录
index index.html index.htm index.php;
if ($server_port !~ 443){
rewrite ^(/.*)$ https://$host$1 permanent;
}
# SSL 设置
ssl_certificate /usr/share/nginx/html/cert/zxalive.com.pem;
ssl_certificate_key /usr/share/nginx/html/cert/zxalive.com.key;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html/zxalive/public;
}
}
|
https+域名访问,成功
https://zxalive.com/
跨域相关
在一级域名监听内允许跨域
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
server {
listen 80;
server_name example.com;
location / {
# 允许所有域名的跨域请求
add_header 'Access-Control-Allow-Origin' '*';
# 也可以指定具体的二级域名
# add_header 'Access-Control-Allow-Origin' 'http://sub.example.com';
# 允许的方法
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
# 允许的头字段
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
# 预检请求的有效期
add_header 'Access-Control-Max-Age' 1728000;
# 处理OPTIONS预检请求
if ($request_method = 'OPTIONS') {
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
# 其他配置...
}
}
|