站点https化教程
发布于 7 年前 作者 Andyliwr 3005 次浏览 来自 分享

最近因为小程序发布需要接口https化的原因,不得不让自己的网站支持https。一些原理啥的我就不讲了,直接说下自己怎么做的吧

首先需要在阿里云去购买一个https证书,你可以点击这儿进行传送,免费版的不收钱,而且可以申请很多个,如果你有多个网站需要支持https的话。

这里写图片描述

购买之后,点击补充信息,并在接下来的页面填写完必要的信息。域名校验类型注意选择dns,并且勾选下方的复选框。

这里写图片描述

这里写图片描述

点击系统生成src,点击创建。这样申请https证书的请求就被创建了。 大概等个5分钟,阿里就会给出回复。一般情况下域名的txt解析都已经被自动添加上去了,如果提示未成功,那自己按照提示手动添加下吧。

提交审核

创建成功之后我们就可以看到证书已签发,然后卸载证书到计算机本地,想要传到服务器,你可以通过sftp或者ftp,如果这些做不到就找一个存放资源的空间—比如七牛云空间,把pem和key文件传送去,复制他们的url,然后在命令行里输入

wget http://xxxxx.pem

这样你就获取到他们了。 在你的服务器上新建一个目录,把这些文件放在这个目录下

mkdir /var/ssl
mv xxx.pem /var/ssl/
mv xxx.key /var/ssl/

接下来就是配置nginx了,不讲那么多了,直接贴代码了

########### website(使http可以访问) ##########
  server {
    listen       80;
    # listen 443 default ssl;
    server_name  api.andylistudio.com;
    # rewrite ^(.*)$  https://$host$1 permanent;
    location / {
      proxy_pass http://localhost:3000/;
      proxy_set_header   Host    $host;
      proxy_set_header   X-Real-IP   $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }
  server {
    listen       80;
    # listen 443 default ssl;
    server_name  khdoc.andylistudio.com;
    # rewrite ^(.*)$  https://$host$1 permanent;
    location / {
      proxy_pass http://localhost:8083/;
      proxy_set_header   Host    $host;
      proxy_set_header   X-Real-IP   $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }
############ ssl(使https可以访问) ################
server {
    listen 443 ssl;
    server_name api.andylistudio.com;
    ssl on;
    root html;
    index index.html index.htm;
    ssl_certificate   /var/ssl/api/api.pem;
    ssl_certificate_key  /var/ssl/api/api.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://localhost:3000/;
      proxy_set_header   Host    $host;
      proxy_set_header   X-Real-IP   $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }
  server {
    listen 443 ssl;
    server_name khdoc.andylistudio.com;
    ssl on;
    root html;
	index index.html index.htm;
    ssl_certificate   /var/ssl/khdoc/khdoc.pem;
    ssl_certificate_key  /var/ssl/khdoc/khdoc.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://localhost:8083/;
      proxy_set_header   Host    $host;
      proxy_set_header   X-Real-IP   $remote_addr;
      proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }

参考文档: nginx 同一个IP上配置多个HTTPS主机 nginx使用ssl模块配置支持HTTPS访问

详情可以查看我的博客 http://www.andylistudio.com/2017/04/22/website_https/

3 回复

let’sencrypt 路过

cloudflare 路过

回到顶部