1. 配置Nginx和hosts,通过域名的方式访问到Nginx站点
Windows下hosts文件在:C:\Windows\System32\drivers\etc\hosts
Linux下hosts文件在:/etc/hosts
在其中添加如下:
192.168.1.100 example.com
2. 什么是SSL证书,有什么作用
SSL 证书(Secure Sockets Layer Certificate)是一种数字证书,用于在客户端和服务器之间建立加密连接,确保数据传输的安全性。SSL 是一种早期的加密协议,后来被更安全的 TLS(Transport Layer Security)协议取代,但人们仍习惯称其为 SSL 证书。
一、SSL/TLS 的作用
加密通信
使用公钥和私钥对数据进行加密和解密,防止中间人攻击(MITM),确保传输过程中数据不会被窃取或篡改。
示例:用户在浏览器中输入用户名和密码时,SSL 确保这些敏感信息不会被第三方截获。
身份验证
通过 CA(Certificate Authority,证书颁发机构)认证服务器的身份,防止用户访问到假冒网站。
例如:银行网站使用 SSL 证书可以避免用户访问到钓鱼网站。
提升信任度
浏览器地址栏显示 HTTPS 和绿色锁图标,表明该网站是可信的,增强用户信任。
SEO 优化
Google 等搜索引擎将 HTTPS 作为排名因素之一,有助于提高网站在搜索结果中的排名。
二、SSL 证书的工作原理
握手过程:
客户端(如浏览器)与服务器建立连接;
服务器发送自己的 SSL 证书给客户端;
客户端验证证书是否由受信任的 CA 颁发;
双方协商加密算法并生成会话密钥;
后续通信都通过这个会话密钥进行加密。
加密方式:
非对称加密:使用公钥加密、私钥解密,用于身份验证和交换密钥;
对称加密:使用相同的密钥加密和解密,用于实际的数据传输,效率更高。
三、SSL 证书的类型
3. 单站点证书跟通配符证书有什么区别,有哪些证书供应商
一、单站点证书与通配符证书的区别
二、常见的 SSL 证书供应商
1. 免费证书提供商
2. 商业证书提供商
4. Nginx如何配置SSL证书,https的默认端口是多少
https的默认端口是443。
一、Nginx 如何配置 SSL 证书
如果有自己的域名,可以使用 Let's Encrypt 免费 SSL 证书,在 Nginx 中配置 HTTPS 的完整步骤如下:
1. 安装 Certbot
sudo apt update
sudo apt install certbot python3-certbot-nginx2. 获取 SSL 证书
sudo certbot --nginx -d example.com -d www.example.comCertbot 会自动修改 Nginx 配置并设置 HTTPS。
或者手动配置:
此处用的自己手动生成的证书用于测试,所以给出命令
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr一路确认就好
随后在nginx配置中加上以下配置
在/etc/nginx/sites-available/default中添加之前生成的的证书。
server {
listen 443 ssl;
server_name your_domain;
ssl_certificate /path/to/your/server.crt; # 替换为实际路径
ssl_certificate_key /path/to/your/server.key; # 替换为实际路径
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
}然后重启一下,查看是否能用https正常登录。
sudo systemctl restart nginx5. CA证书是什么?跟网站的SSL证书有什么关系
一、CA证书是什么?
CA证书(Certificate Authority Certificate) 是由受信任的证书颁发机构(CA)签发的一种数字证书,用于验证和签署其他证书。它是整个公钥基础设施(PKI)中的信任根。
CA证书的作用:
建立信任链:CA 证书是信任链的起点,浏览器或操作系统内置了多个可信 CA 证书。
签名其他证书:CA 使用其私钥对申请者的 SSL/TLS 证书进行签名,确保该证书的真实性。
防止伪造:只有被 CA 签名的证书才能被客户端(如浏览器)认为是可信的。
示例:
常见的 CA 有:DigiCert、GlobalSign、Let's Encrypt、VeriSign 等。
操作系统或浏览器中通常预装了这些 CA 的根证书。
二、SSL证书是什么?
SSL/TLS 证书 是一种用于加密客户端与服务器之间通信的数字证书,它绑定一个特定的域名或 IP 地址,并通过 CA 的签名来证明其合法性。
SSL证书的作用:
身份验证:证明网站的身份(如
example.com属于某个组织)。数据加密:在客户端和服务器之间建立加密连接(HTTPS)。
完整性保护:防止传输过程中的内容被篡改。
6. 什么是一级域名,什么是二级域名。
一、什么是一级域名(顶级域名)?
一级域名(Top-Level Domain,简称 TLD) 是域名系统中最高级别的域名,位于域名结构的最右边。它用于标识域名的类别或所属国家/地区。
.com:商业机构.org:非营利组织.net:网络服务提供商.edu:教育机构(主要用于美国).gov:政府机构(主要用于美国).cn:中国国家顶级域名.io:科技公司常用(原为英属印度洋领地)
特点:
由 ICANN(互联网名称与数字地址分配机构)统一管理;
通常不能直接使用,需要在其下注册二级域名;
比如你不能直接访问
.com,而是访问example.com。
二、什么是二级域名?
二级域名(Second-Level Domain,简称 SLD) 是紧接在一级域名(TLD)之下的域名层级,是用户实际注册和使用的部分。
特点:
用户可以在 TLD 下注册 SLD(如
yourname.com);是网站品牌的主要体现(如
google.com,taobao.com);可以进一步划分子域名(三级域名),如
mail.example.com。
7. 自行创建一个CA证书,并签发一个上面所用域名的SSL证书
输入以下命令创建一个CA证书:
openssl genrsa -out ca.key 2048
openssl req -new -x509 -days 365 -key ca.key -out ca.crt使用CA证书签署CSR
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
8. 如何配置系统信任CA证书,配置Windows和Ubuntu系统信任之前创建的CA证书
Windows 系统配置信任自签名 CA 证书
步骤如下:
打开证书管理器
按
Win + R,输入mmc,回车;在 MMC 控制台中,点击菜单栏
文件 > 添加/删除管理单元;选择
证书,点击添加;选择
计算机账户→下一步→完成→确定。
导入 CA 证书
展开左侧树状结构:
证书(本地计算机) > 受信任的根证书颁发机构;右键点击
证书文件夹 →所有任务→导入;启动证书导入向导:
下一步 → 浏览并选择你的 CA 证书文件(如
ca.crt);选择存储位置:受信任的根证书颁发机构;
完成导入。
验证是否成功
打开浏览器访问使用该 CA 签发的 HTTPS 网站,应不再提示证书错误。
方法一:通过命令行添加信任
复制 CA 证书到系统证书目录
bashsudo cp ca.crt /usr/local/share/ca-certificates/
更新系统信任库
bashsudo update-ca-certificates
该命令会自动将证书链接到
/etc/ssl/certs/并更新信任链。
验证是否生效
curl -v https://your-domain.com如果输出中显示
SSL certificate verify ok,表示信任已生效。
方法二:手动配置 OpenSSL 信任链(可选)
如果你的应用程序使用的是 OpenSSL 而非系统信任库,可能还需要手动指定信任的根证书:
创建一个信任链文件
cat ca.crt > /usr/local/etc/openssl/cert.pem设置环境变量(可选)
export SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem
9. 在Nginx上配置此证书并通过https来访问
和ssl差不多,将
ssl_certificate /path/to/your/server.crt; # 替换为实际路径
ssl_certificate_key /path/to/your/server.key; # 替换为实际路径替换一下即可
10. 在Nginx创建2个子站点,一个使用8081端口, 一个使用8082端口,使用不同的站点目录和站点文件
步骤一:创建网站根目录并添加测试页面
sudo mkdir -p /var/www/site1
sudo mkdir -p /var/www/site2测试页面内容:
index.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>站点2</title>
</head>
<body>
<h1>这是站点 2</h1>
</body>
</html>步骤二:创建 Nginx 子站点配置文件
在 /etc/nginx/sites-available/ 目录下创建两个站点配置文件:
配置第一个子站(端口 8081)
# /etc/nginx/sites-available/site1.conf
server {
listen 8081;
server_name localhost;
location / {
root /var/www/site1;
index index.html;
try_files $uri $uri/ =404;
}
}
配置第二个子站(端口 8082)
# /etc/nginx/sites-available/site2.conf
server {
listen 8082;
server_name localhost;
location / {
root /var/www/site2;
index index.html;
try_files $uri $uri/ =404;
}
}步骤三:启用站点配置
创建软链接到 sites-enabled 目录以启用这两个站点:
sudo ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.conf /etc/nginx/sites-enabled/步骤四:验证 Nginx 配置语法并重载服务
sudo nginx -t
sudo systemctl reload nginx步骤四:允许端口通过防火墙(如使用 ufw)
如果你的系统启用了防火墙,请开放 8081 和 8082 端口:
sudo ufw allow 8081/tcp
sudo ufw allow 8082/tcp
11. 什么是反向代理,什么是正向代理,什么是负载均衡
1. 正向代理(Forward Proxy)
定义:
正向代理是客户端使用的中间服务器,用于代表客户端访问外部网络资源。它隐藏了客户端的身份。
使用场景:
用户通过代理访问外网(如翻墙)
公司限制员工访问某些网站时,绕过限制
缓存静态内容加速访问
特点:
客户端主动配置代理
服务器不知道请求来自代理
保护客户端隐私
示例:
# Nginx 配置一个简单的正向代理(常用于局域网内访问外部)
server {
listen 8080;
location / {
resolver 8.8.8.8;
proxy_pass http://$host$uri$is_args$args;
}
}2. 反向代理(Reverse Proxy)
定义:
反向代理是服务器端的代理,用于接收客户端请求,并将请求转发给后端服务器。它隐藏了服务器的真实地址。
使用场景:
提供统一入口访问多个内部服务
实现 HTTPS 终端加密(SSL Termination)
缓存静态资源以提高性能
负载均衡前端流量
特点:
客户端不知道后端服务器的存在
所有请求先经过反向代理
可实现安全控制、缓存、压缩等增强功能
示例(Nginx):
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://192.168.1.10: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;
}
}3. 负载均衡(Load Balancing)
定义:
负载均衡是一种技术,用于将网络请求“均匀”地分发到多个后端服务器上,以提升系统可用性与响应速度。
使用场景:
多个 Web 服务器提供相同服务
微服务架构中 API 网关层
高并发系统的请求分发
支持的算法(常见):
示例(Nginx 实现负载均衡):
http {
upstream backend {
server 192.168.1.10:3000 weight=3;
server 192.168.1.11:3000;
server 192.168.1.12:3000 backup; # 备用节点
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}结对比表:
常见组合使用示例:
在实际部署中,这三种技术常常一起使用:
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
location /api {
proxy_pass http://backend_servers; # 反向代理 + 负载均衡
}
location /images {
proxy_pass http://image_cache_server; # 专用图片缓存服务器
}
}
upstream backend_servers {
least_conn;
server 10.0.0.1:3000;
server 10.0.0.2:3000;
keepalive 32;
}
12. 配置Nginx负载均衡到上面两个子节点
步骤:配置 Nginx 负载均衡器
编辑一个新配置文件,例如 /etc/nginx/sites-available/loadbalancer.conf:
# 定义后端服务器组
upstream backend_servers {
least_conn;
server localhost:8081;
server localhost:8082;
}
# 监听 80 端口的负载均衡入口
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}步骤三:启用该配置并重载 Nginx
创建软链接启用站点配置:
sudo ln -s /etc/nginx/sites-available/loadbalancer.conf /etc/nginx/sites-enabled/步骤四:访问负载均衡地址
现在你可以通过浏览器或命令行访问:
http://192.168.75.130会连接到两个站点中的其中一个。