# 引言
相信大家都有过搭建个人站点
的经历,有的小伙伴为了站点更好访问,还会配置对应的域名。我们都知道,http站点虽然能够满足我们的大部分要求,但是在安全性方面稍有欠缺
。比如:
在非https的网站,chrome浏览器会自动提示不安全。所以倔友们,有域名
的话,就先备案,然后一起升级你的站点吧!
# 准备工作
如上,我们必须先准备一个域名
(买一个吧,不贵),并且为备案域名提交一些资料,比如我是在某云上买的域名,大概每年20块吧。
接着你要为你买的域名备案
,这样你的域名才能正确绑定到你的云服务器(所以云服务器,也肯定要有哦)。
最后就是向你的域名供应商申请ssl证书啦,有了前面的准备工作以后,后面的都很简单了。
# 申请证书
比如我用的供应商,就能申请20个免费的ssl证书
。先来说说我申请的3个证书的作用:
- api
用于服务于api,也可以理解为后端服务的域名。
- www
www的域名,用于主站点的展示。
- static
这里是我申请的oss域名,用于存放oss文件。
其实还可以申请其他的,比如db.xxx.com,redis.xxx.com,这样包括db、redis你都不用再记录对应的ip/port,方便是一个方面,安全也是另一个方面。
申请步骤很简单,按照上面的指示即可。我申请的api.xxx.com则是子域名的模式(xxx.com是我买的域名,api.xxx.com则是我可以任意定义的子域名,这个不收钱的)
PS: 申请证书一般是针对你已经配置好的解析记录来操作的,比如你要申请api.xxx.com,那就先要解析api.xxx.com => 你的ip地址。如果绕过这一步,ssl证书无法申请。
# 下载证书
申请完毕后,我们可以下载证书,供应商提供了多种部署方式的证书:
因为我比较常用nginx
,所以这里就教大家使用nginx部署的方法。
下载完毕后,我们会拿到一个zip文件,里面有域名+编号的信息文件,共2个,一个key后缀一个pem后缀,稍后我们会用到。
这2个文件我们需要放入服务器,并在nginx里面配置好.
# 配置Nginx
由于本文不是重点介绍nginx的文章,所以这里假设大家会使用(但其实基本的配置也不难)
由于https默认端口是443,所以我们listen 443端口,并带上ssl选项。
server_name
指的是通过什么地址访问的你这个服务,由于我们会对443开启多个server,所以这里用server_name区分。比如我有1台机器,api.xxx.com会走443端口,xxx.com也会走443端口,我们就分别配置server_name为api.xxx.com和xxx.com,再把他们转发到其他服务。(我个人理解nginx主要是一层代理)
ssl_certificate
证书地址,我们需要把刚才提到的key和pem文件传到服务器某个路径,这里填写路径即可。
ssl_certificate_key
同上。
中间的内容基本都是固定写法(我也是copy的)
location
这里配置的就是要转发的地方,比如我的前端服务是8008端口,这里localhost指的是本机,其实可以配置多个,由于我只有1台机器,所以这里就写做本机的8008端口。
/
代表所有路径,也就是只要是这个域名443端口的请求全部转发到localhost:8008,这样也就完成了一个https的配置工作。下面是参考配置:
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
# Load modular configuration files from the /etc/nginx/conf.d directory.
# See http://nginx.org/en/docs/ngx_core_module.html#include
# for more information.
include /etc/nginx/conf.d/*.conf;
server {
listen 80;
server_name api.xxx.com; // 你的后端域名
location / {
proxy_pass http://localhost:7777;
}
// websocket转发
location /ws {
proxy_pass http://localhost:7777/ws;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
server {
listen 443 ssl;
server_name static.xxx.com;
ssl_certificate /etc/nginx/cert/7545717_static.xxx.com.pem;
ssl_certificate_key /etc/nginx/cert/7545717_static.xxx.com.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://真正的地址;
}
}
}
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
40
41
42
43
44
45
46
47
48
49
50
51
52
今天的内容就介绍到这儿啦,有不懂的可以留言
呀!~