如何快速的给自己的域名添加一把锁
昨天在给自己的树莓派做反向代理时,想起来nginx的很多高能操作,可以做代理,可以加SSL,而之前做反向代理时一直是加端口号的,加了端口号好像没办法做SSL,所以我就想着把这两三个操作加起来或许可以解决这个问题。
之前访问的域名是http://domain.com:1234这样的格式,做完以后访问的域名是https://domain.com
首先解决端口的问题,由于我们访问domain.com的时候指向的ip地址已经是服务器地址了,所以这个域名是可以被nginx监听到的,故只需要在nginx配置文件中新建一个server,填入以下内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
server { listen 80; listen 443 ssl http2; server_name domain.com; index index.php index.html; # 这句是为了下文做SSL认证时访问的验证文件目录 location ~ \.well-known{ allow all; } # 转发访问的域名 location / { proxy_pass http://domain.com:1234; } } |
这一步以后你就可以通过访问http://domain.com的形式访问到1234这个端口了
接下来就是添加SSL的认证
有一个一键式生成证书的网站用起来很方便:sslforfree.com
打开以后会要求你输入你自己的域名
输入你的域名:domain.com就会出现验证域名的页面
第一个方式是通过ftp自动验证,我没有尝试过,这里就不说了
第二个方式是通过手动文件验证,我们点击第二个,再点击下方按钮
由于我们输入的是domain.com这种格式,所以他自动的帮我们添加了一个www.domain.com的格式,这就是这里会出现两个文件的原因,两个文件对应了两个域名的验证信息,但我们只要验证domain.com,所以下载第一个就行了
下载步骤1的第一个文件,在你网站的应用目录底下新建文件夹.well-known,进入里面再新建一个acme-challenge文件夹,之后把下载的文件上传到acme-challenge文件夹内,使得步骤5里面的第一个链接能访问到这个文件,接下来只要点击底部按钮下载SSL证书即可
下载下来的证书包括三个文件ca_bundle.crt,certificate.crt,private.key,第一个是CA签发机构的文件,似乎并不需要用到,主要是第二三个文件,把后面两个文件上传到服务器的非web目录,这是隐私文件,不能放在web目录底下避免造成信息泄露,之后修改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 |
server { listen 80; listen 443 ssl http2; server_name domain.com; index index.php index.html; # 强制HTTPS if ($server_port !~ 443){ rewrite ^(/.*)$ https://$host$1 permanent; } ssl_certificate /path/to/certificate.crt; #这里修改为自己的文件目录 ssl_certificate_key /path/to/private.key; #这里修改为自己的文件目录 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; error_page 497 https://$host$request_uri; #SSL-END #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } #SSL证书验证目录相关设置 location ~ \.well-known{ allow all; } location / { proxy_pass http://domain.com:1234; } } |
之后只要重新加载nginx就行了:nginx -s reload
再次访问域名时就有了一把小锁
上面说的是第二种验证方式,也可以采用第三种验证方式,用DNS验证的方法
选择第三种验证方式,并且点击下方按钮就会提示让你添加一个域名解析记录:
你只需要打开你的域名解析记录,添加一个TXT记录,把_acme-challenge.domain.com的值记录为底下FuHvvUHgc……这串字符即可,不过DNS解析需要一定的时间,从半分钟到十分钟都有可能,具体看你填写的TTL是多少以及你的域名解析商的执行力
第三步会给你验证链接,如果你点进去可以看到上面那串值就说明验证成功了
接着下载SSL的三个文件,之后的步骤和上面的一样
有时候学习计算机就是这样,看似繁琐的一次次解决细小问题的背后,是你融会贯通运用这些细小知识的坚实基础
-- 于 ,共写了1288个字;
-- 文内使用到的标签:
- 下一篇:清除计划【rm -rf /】
- 上一篇:放弃手机的第七天我在做什么