软件技术学习笔记

个人博客,记录软件技术与程序员的点点滴滴。

Nginx同时开启IPv4与IPv6

Vultr VPS支持IPv6地址,于是想让Nginx也提供HTTPS IPv6服务。

  1. 准备:VPS添加IPv6地址,重启服务器。

  2. 更新自己的DNS域名解析:添加AAAA地址记录到新添加的IPv6地址。

  3. Nginx新增IPv6地址Listen,并重启Nginx:

    # HTTP
    listen 80 default_server;
    listen [::]:80 default_server;
    
    # HTTPS
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    
  4. ip6tables添加80与443端口。在/etc/iptables/rules.v6文件中添加:

    # Nginx HTTPS
    -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
    -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
    
  5. 更新Vultr防火墙,见https://my.vultr.com/firewall/,在防火墙规则的Inbound IPv6 Rules中放行80与443端口。

继续阅读→

Vultr上升级到Ubuntu 20.04

原先系统使用Ubuntu 18.04,今天试着升级到Ubuntu 20.04。先sudo apt install screen安装Screen,避免SSH中断无法继续。

为了避免数据丢失,在升级之前先对VPS进行Snapshot一次。Vultr防火墙放行TCP 1022端口。参考 https://www.digitalocean.com/community/tutorials/how-to-upgrade-to-ubuntu-18-04 的步骤升级Ubuntu 20.04。

使用Putty SSH连接VPS时,把Putty窗口一直置于前台,避免升级过程中无响应、升级失败。也可以使用VPS实例的View Console VNC控制台升级系统,不怕掉线。

继续阅读→

使用DNS加密避免DNS污染

普通DNS协议不支持加密传输,DNS查询时可以被网络中的其它服务伪造数据包响应,查询到的域名IP地址是伪造的,称为“DNS污染”。

为了避免“DNS污染”,有这几种方案:DNSSEC、DNSCrypt、DNS-over-TLS (DoT)、DNS-over-HTTPS (DoH)。除了DNSSEC,其余三种协议都可以避免中间人窃听,是比较安全的传输协议。

DNS加密网络如下:

DNS加密网络

继续阅读→

个人博客备案

有个人域名和双11购买3年的ECS,想把自己的博客救活起来,正规在国内开通一个网站,:)

在国内开通网站,最少需要两种备案:

  1. 工信部ICP备案
  2. 公安部网络安全备案
继续阅读→

Nginx中配置Cache-Control

Nginx默认配置只给文件生成ETag,没有添加Cache-Control相关的控制,造成Chrome浏览器默认当作永久缓存(除了在地址栏输入URL跳转时,才重新使用ETag校验)。

单页面应用网站的静态资源长期缓存策略:

  1. 主页index.html每次使用ETag校验。
  2. 其余资源(CSS/JS/Images等),根据其内容取HASH值提供唯一的URL路径。

但是,静态Blog网站一般都是很多个页面,且一篇Blog需确保URL地址不变,所以,需要使用不同的缓存控制策略。

继续阅读→

使用Let’s Encrypt免费证书实现网站的HTTPS服务

使用 Nginx 搭建网站,并确保使用 80 和 443 端口提供服务

  1. 先使用自认证证书,设置正确的 server_name,让 nginx 能够跑起来,
  2. 下一步要使用 Certbot 做证书自动获取与更新,必需使用标准的 80 和 443 端口提供服务;否则获取证书失败,原因请参考 https://letsencrypt.org/zh-cn/how-it-works/

Ubuntu中使用 Certbot 获取证书与自动更新

使用Ubuntu Server 18.04搭建服务器,维护比其他的更轻松一些,:)

参考:https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx

继续阅读→