Nignx部署Vue项目刷新报404错误解决
1 | location / { |
1 | location / { |
dns端口号是域名系统 (Domain Name System
) 的缩写,该系统用于命名组织到域层次结构中的计算机和网络服务。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成。
DNS协议运行在UDP协议之上,使用端口号53。在传输层TCP提供端到端可靠的服务,在UDP端提供尽力交付的服务。其控制端口作用于UDP端口53。
缺点:
传统的DNS查询和应答采用大都采用UDP明文传输,存在网络监听、DNS劫持、中间设备干扰的风险。
从安全角度来看,请求传输时通常不进行任何加密,任何人都可以读取的 DNS 其实是不安全的。这意味着网络罪犯可以很容易地使用自己的服务器拦截受害者的 DNS,将用户的请求跳转到钓鱼网站上,这些网站发布恶意软件,或在正常网站上投放大量广告吸引用户,这种行为我们称之为 DNS 劫持。
DoT
全称是 DNS over TLS
,它使用 TLS
协议来传输 DNS
协议。TLS
协议是目前互联网最常用的安全加密协议之一,我们访问 HTTPS
的安全基础就是基于 TLS
协议的。相比于之前使用无连接无加密的 UDP
模式, TLS
本身已经实现了保密性与完整性。
DoH
全称是 DNS over HTTPS
,它使用 HTTPS
来传输 DNS
协议。DoH
的安全原理与 DoT
一样,他们之间的区别只在于:DoH
有了 HTTP
格式封装,更加通用。
DoT
在专用端口上通过 TLS
连接 DNS
服务器,而 DoH
是基于使用 HTTP
应用程序层协议,将查询发送到 HTTPS
端口上的特定 HTTP
端点,这里造成的外界感知就是端口号的不同,DoT
的端口号是 853
,DoH
端口号 443
。
A记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录。
1 | example.com A 12.34.56.78 |
可以将不同的子域指向不同的 IP 地址。如果要将 example.com 的每个子域都指向同一个 IP,可以使用星号(*
)作为子域:
1 | *.example.com A 12.34.56.78 |
一个 AAAA 记录和 A 记录相似,不过是用于 IPv6 的 IP 地址。一个典型的 AAAA 记录如下所示:
1 | example.com AAAA 0123:4567:89ab:cdef:0123:4567:89ab:cdef |
NS记录: 域名解析服务器记录(Name sever record
),是为域或子域设置对应的域名服务器。
如果要将子域名指定某个域名服务器来解析,需要设置NS记录。
域名的主要域名服务器记录既可以在注册商处设置,也可以在自己的区域文件中设置。一份典型的域名服务器记录(至少需要两个记录)如下所示:NS 记录的顺序无关紧要。DNS 请求随机发送到不同的服务器,如果一个主机无法响应,将查询另外一个主机。
1 | example.com NS ns1.linode.com. |
CNAME 记录:称为规范名称记录(Canonical Name record
),它将一个域或子域匹配到其它不同的域。
如果将域名指向一个域名,实现与被指向域名相同的访问效果,需要增加CNAME
记录。
通过 CNAME 记录,DNS 查找则采用目标域的 DNS 解析作为别名的解析。下面举例:
1 | alias.com CNAME example.com. |
SOA记录: 起始权限记录(Start of Authority record),起始授权机构记录,NS用于标识多台域名解析服务器,SOA记录用于在众多NS记录中哪一台是主服务器。
SOA 记录中提到的单个域名服务器被视为动态 DNS 的第一服务器,并且是将区域文件传播到所有其他域名服务器之前,区域文件就要被更改完成的所在。
SOA 记录:
1 | @ IN SOA ns1.linode.com. admin.example.com. 2013062147 14400 14400 1209600 86400 |
注意:管理电子邮件地址使用句点(.
)而不是 @
符号编写。
含义:
WKS:众所周知的业务描述
DNS 证书颁发机构授权(CAA,Certification Authority Authorization)使用 DNS 来允许域的持有者指定 “哪些证书颁发机构能够为该域发放证书”。
AXFR 记录是一种用于 DNS 复制的记录(虽然当下有更先进的 DNS 复制方法)。AXFR 记录不是用于普通区域文件的。相反,它们应用于从 DNS 服务器,作用是从主 DNS 服务器上复制区域文件。
PTR记录: PTR记录是A记录的逆向记录,又称做IP反查记录或指针记录,负责将IP反向解析为域名。
PTR 记录或称指针记录(Pointer record
)将 IP 地址匹配至一个域或者子域,它允许反向的 DNS 查询工作。它执行的服务于 A 记录截然相反,因为它允许您查找与特定 IP 地址相关联的域。
添加 PTR 记录,需要创建一个有效且实时的 A 或 AAAA 记录,将所需的域指向该 IP。如果需要 IPv4 PTR 记录,请将域或子域指向IPv4 地址。如果需要 IPv6 PTR 记录,则将域指向IPv6 地址。除此之外,IPv4 和 IPv6 PTR 记录的工作方式是相同的。
MX记录:邮件交换记录(Mail exchanger record),建立电子邮箱服务,将指向邮件服务器地址,需要设置MX记录。建立邮箱时,一般会根据邮箱服务商提供的MX记录填写此记录。
1 | example.com MX 10 mail.example.com. |
以上记录将example.com
的邮件直接发送到mail.example.com
这一服务器。目标域(上述的mail.example.com)需要有自己的 A 记录。理想情况下,MX 记录应指向同为其服务器主机名的域。
优先级是 MX 记录的另一个组成部分。这是记录类型和目标服务器之间写入的数字(在上例中为 10)。优先级允许您为特定域的邮件指定一个回退服务器(或多个服务器)。较低的数字代表较高的优先级。
下面是具有两个回退邮件服务器的域的示例:
1 | example.com MX 10 mail_1.example.com |
在此示例中,如果 mail_1.example.com
已关闭,则将传递邮件到 mail_2.example.com
。如果mail_2.example.com
也是关闭,邮件将被发送到 mail_3.example.com
。
可任意填写,可为空。一般做一些验证记录时会使用此项,如:做SPF(反垃圾邮件)记录。
TXT记录或称文本记录(Text record),向因特网上的其他资源提供有关该域的信息。它是一种灵活的 DNS 记录类型,可根据具体内容提供多种用途。TXT 记录的一个常见用途是在域名服务器上创建 SPF 记录
SPF 记录或称发送方政策框架记录(Sender Policy Framework record),列出了域或子域所指定的邮件服务器。它有助于确定邮件服务器的合法性,并减少欺骗的可能性(当有人伪造电子邮件的标题,使其看起来像是来自您的域时)。垃圾邮件发送者有时会尝试这样做以绕过过滤器。
DKIM 记录或称域名密匙确认邮件记录(Domainkeys Identified Mail record
),它显示用于验证已经签署了 DKIM 协议的消息的公钥。这种做法提高了检查邮件可靠性的能力。一个典型的 DKIM 记录如下所示:
1 | selector1._domainkey.example.com TXT k=rsa;p=J8eTBu224i086iK |
DKIM 记录以文本记录作为实现。该记录必须是为子域创建的记录,它具有唯一对应于键的一个选择器,然后便是句点(.),紧跟着是_domainkey.example.com。其类型为 TXT,值则包含键的类型,后面跟着实际键值。
SRV记录: 添加服务记录服务器服务记录时会添加此项,SRV记录了哪台计算机提供了哪个服务。格式为:服务的名字.协议的类型(例如:_example-server._tcp)。
SRV 记录或称服务记录(Service record)将运行在您的域或子域上的指定服务匹配到一个目标与。这允许您将特定服务(如即时消息)的流量定向到另一台服务器。典型的 SRV 记录如下所示:
1 | _service._protocol.example.com SRV 10 0 5060 service.example.com |
下面分别解释 SRV 记录中的元素:
选项资源记录。可将一个 OPT 资源记录添加到 DNS 请求或响应的附加数据部分。OPT 资源记录属于特定传输层消息(例如,UDP),不属于实际 DNS 数据。每条消息只允许具有一个 OPT 资源记录,但不是必需选项。
这是一个 伪DNS记录类型
以支持 EDNS。EDNS:扩展DNS机制EDNS(Extension Mechanisms for DNS)。
1 | control # 控制面板 |
RSA,DSA,ECDSA,EdDSA和Ed25519都用于数字签名,但只有RSA也可以用于加密。
ssh key的类型有四种,分别是 dsa、rsa、 ecdsa、ed25519,优先选择ed25519。
RSA(Rivest–Shamir–Adleman)是最早的公钥密码系统之一,被广泛用于安全数据传输。它的安全性取决于整数分解,因此永远不需要安全的RNG(随机数生成器)。与DSA相比,RSA的签名验证速度更快,但生成速度较慢。
Diffie-Hellman
密钥协议算法是一种确保共享密钥KEY安全穿越不安全网络的方法,它是OAKLEY的一个组成部分,由Whitefield与Martin Hellman在1976年提出。这个机制的巧妙在于需要安全通信的双方可以用这个方法确定对称密钥。然后可以用这个密钥进行加密和解密。但是注意,这个密钥交换协议/算法只能用于密钥的交换,而不能进行消息的加密和解密。双方确定要用的密钥后,要使用其他对称密钥操作加密算法实际加密和解密消息。
DSA(Digital Signature Algorithm,数字签名算法,用作数字签名标准的一部分),它是另一种公开密钥算法,它不能用作加密,只用作数字签名。DSA使用公开密钥,为接受者验证数据的完整性和数据发送者的身份。它也可用于由第三方去确定签名和所签数据的真实性。DSA算法的安全性基于解离散对数的困难性,这类签字标准具有较大的兼容性和适用性,成为网络安全体系的基本构件之一。
DSA 一般用于数字签名和认证。在DSA数字签名和认证中,发送者使用自己的私钥对文件或消息进行签名,接受者收到消息后使用发送者的公钥来验证签名的真实性。DSA只是一种算法,和RSA不同之处在于它不能用作加密和解密,也不能进行密钥交换,只用于签名,它比RSA要快很多。
椭圆曲线加密算法,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比RSA,ECC优势是可以使用更短的密钥,来实现与RSA相当或更高的安全,RSA加密算法也是一种非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用。据研究,160位ECC加密安全性相当于1024位RSA加密,210位ECC加密安全性相当于2048位RSA加密(有待考证)。
ECDH全称是椭圆曲线迪菲-赫尔曼秘钥交换(Elliptic Curve Diffie–Hellman key Exchange),主要是用来在一个不安全的通道中建立起安全的共有加密资料,一般来说交换的都是私钥,这个密钥一般作为“对称加密”的密钥而被双方在后续数据传输中使用。
椭圆曲线数字签名算法(ECDSA)是使用椭圆曲线密码(ECC)对数字签名算法(DSA)的模拟。ECDSA于1999年成为ANSI标准,并于2000年成为IEEE和NIST标准。它在1998年既已为ISO所接受,并且包含它的其他一些标准亦在ISO的考虑之中。与普通的离散对数问题(discrete logarithm problem DLP)和大数分解问题(integer factorization problem IFP)不同,椭圆曲线离散对数问题(elliptic curve discrete logarithm problem ECDLP)没有亚指数时间的解决方法。因此椭圆曲线密码的单位比特强度要高于其他公钥体制。
ECDSA是ECC与DSA的结合,整个签名过程与DSA类似,所不一样的是签名中采取的算法为ECC,最后签名出来的值也是分为r,s。
用于生成密钥的曲线(curve):
EdDSA(爱德华兹曲线数字签名算法)是一种使用基于扭曲爱德华兹曲线的Schnorr签名变体的数字签名方案。签名创建在EdDSA中是确定性的,其安全性是基于某些离散对数问题的难处理性,因此它比DSA和ECDSA更安全,后者要求每个签名都具有高质量的随机性。
Ed25519是EdDSA签名方案,但使用 SHA-512/256
和 Curve25519
;它是一条安全的椭圆形曲线,比DSA,ECDSA和EdDSA 提供更好的安全性,并且具有更好的性能。
参考:
1 | PS E:\code> hexo server |
计算机上启动 Windows PowerShell
时,执行策略很可能是 Restricted
(默认设置)。
Restricted
执行策略不允许任何脚本运行。 AllSigned
和 RemoteSigned
执行策略可防止 Windows PowerShell
运行没有数字签名的脚本。计算机上的现用执行策略,打开 PowerShell
然后输入 :get-executionpolicy
1 | PS C:\WINDOWS\system32> get-executionpolicy |
以管理员身份打开 PowerShell
输入 set-executionpolicy remotesigned
,并输入Y。
1 | PS C:\WINDOWS\system32> set-executionpolicy remotesigned |
参考:
安装npm 包:
1 | npm install hexo-symbols-count-time |
在博客根目录修改:_config.yml
:
1 | symbols_count_time: |
在 Next 配置文件中 \source\_data\next.yml
或 config
:
(默认会添加,切记不能重复添加)
1 | # Post wordcount display settings |
重新启动:
1 | npx hexo s |
参考:
npm 从5.2版开始,增加了 npx 命令。npx 想要解决的主要问题,就是调用项目内部安装的模块。
使用不同的 Node.js
版本运行代码
使用 @
指定版本,并将其与 node npm
软件包 结合使用:
1 | npx node@10 -v #v10.18.1 |
这有助于避免使用 nvm
之类的工具或其他 Node.js
版本管理工具。
重要:
安装前首先要卸载已安装的任何版本的 NodeJS
,安装过程需要设置 NVM
的安装路径和 NodeJS
的快捷方式路径,可以选择任意路径。
nvm下载地址:https://github.com/coreybutler/nvm-windows/releases
在安装目录下配置:C:\Users\Administrator\AppData\Roaming\nvm
输入以下命令设置nodejs
路径(相当于setting.txt
中的path
:):
1 | nvm node_mirror https://npmmirror.com/mirrors/node/ |
settings.txt
文件内容:
1 | root: C:\Users\Administrator\AppData\Roaming\nvm |
重要:
通过 nvm
命令安装NodeJS
时,需要以管理员权限启动命令行。
1 | # 查看已经安装的版本 |
参考:
1 | # 安装模块到项目目录下,将依赖写入到dependencies中 |
参考:
对应关系:
https://github.com/sass/node-sass
NodeJS | Supported node-sass version | Node Module |
---|---|---|
Node 16 | 6.0+ | 93 |
Node 15 | 5.0+ | 88 |
Node 14 | 4.14+ | 83 |
Node 13 | 4.13+, <5.0 | 79 |
Node 12 | 4.12+ | 72 |
Node 11 | 4.10+, <5.0 | 67 |
Node 10 | 4.9+, <6.0 | 64 |
Node 8 | 4.5.3+, <5.0 | 57 |
Node <8 | <5.0 | <57 |
1 | # 卸载 |