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 的作用

  1. 加密通信

    • 使用公钥和私钥对数据进行加密和解密,防止中间人攻击(MITM),确保传输过程中数据不会被窃取或篡改。

    • 示例:用户在浏览器中输入用户名和密码时,SSL 确保这些敏感信息不会被第三方截获。

  2. 身份验证

    • 通过 CA(Certificate Authority,证书颁发机构)认证服务器的身份,防止用户访问到假冒网站。

    • 例如:银行网站使用 SSL 证书可以避免用户访问到钓鱼网站。

  3. 提升信任度

    • 浏览器地址栏显示 HTTPS 和绿色锁图标,表明该网站是可信的,增强用户信任。

  4. SEO 优化

    • Google 等搜索引擎将 HTTPS 作为排名因素之一,有助于提高网站在搜索结果中的排名。


二、SSL 证书的工作原理

  1. 握手过程

    • 客户端(如浏览器)与服务器建立连接;

    • 服务器发送自己的 SSL 证书给客户端;

    • 客户端验证证书是否由受信任的 CA 颁发;

    • 双方协商加密算法并生成会话密钥;

    • 后续通信都通过这个会话密钥进行加密。

  2. 加密方式

    • 非对称加密:使用公钥加密、私钥解密,用于身份验证和交换密钥;

    • 对称加密:使用相同的密钥加密和解密,用于实际的数据传输,效率更高。


三、SSL 证书的类型

类型

描述

验证级别

适用场景

域名验证(DV)

仅验证域名所有权

快速简单

博客、小型网站

组织验证(OV)

验证域名 + 组织信息

中等

企业官网、内部系统

扩展验证(EV)

严格验证域名、组织和法律实体

最高

金融、银行、电商网站

通配符证书(Wildcard)

支持主域名及所有子域名(如 *.example.com

中等

多子域名网站

多域名证书(SAN)

支持多个不同域名(如 example.comtest.com

中等

多域名项目


3. 单站点证书跟通配符证书有什么区别,有哪些证书供应商

一、单站点证书与通配符证书的区别

对比项

单站点证书(Single Domain SSL)

通配符证书(Wildcard SSL)

适用域名

仅适用于一个特定的域名(如 example.comwww.example.com

支持主域名及其所有子域名(如 *.example.com

支持子域名数量

不支持子域名,每个子域需要单独申请证书

支持无限数量的子域名(如 mail.example.com, blog.example.com 等)

管理复杂度

每个域名/子域都需要独立证书,管理较繁琐

一张证书可覆盖多个子域,便于统一管理

成本

成本较低

成本较高

部署灵活性

更适合单一网站或少量子域场景

更适合拥有多个子域的企业级应用

安全性

私钥只需在单个服务器上使用

同一私钥可能被多个子域服务使用,存在扩散风险

二、常见的 SSL 证书供应商

1. 免费证书提供商

供应商

特点

官网链接

Let's Encrypt

免费、自动化的 DV 证书,广泛用于个人和中小企业

https://letsencrypt.org

ZeroSSL

提供免费的 DV 证书,界面友好,支持 ACME 自动签发

https://zerossl.com

2. 商业证书提供商

供应商

特点

常见证书类型

官网链接

DigiCert

高信任度,全球认可,支持 OV/EV/Wildcard 多种证书

EV, OV, Wildcard, SAN

https://www.digicert.com

Sectigo(原Comodo CA)

性价比高,适合企业级部署

DV, OV, EV, Wildcard

https://www.sectigo.com

GlobalSign

提供多语言支持和本地化服务,适合跨国企业

OV, EV, Wildcard

https://www.globalsign.com

GoDaddy

提供一站式域名+SSL服务,适合小型企业

DV, OV, Wildcard

https://www.godaddy.com

SSL.com

支持多种证书类型,价格透明

DV, OV, EV, Wildcard

https://www.ssl.com

AlphaSSL

Sectigo 子品牌,性价比高

DV, OV, Wildcard

https://www.alphassl.com

Trustwave

提供安全审计与证书一体化服务

OV, EV, Wildcard

https://www.trustwave.com


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-nginx

2. 获取 SSL 证书

sudo certbot --nginx -d example.com -d www.example.com

Certbot 会自动修改 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 nginx

5. CA证书是什么?跟网站的SSL证书有什么关系

一、CA证书是什么?

CA证书(Certificate Authority Certificate) 是由受信任的证书颁发机构(CA)签发的一种数字证书,用于验证和签署其他证书。它是整个公钥基础设施(PKI)中的信任根。

CA证书的作用:

  1. 建立信任链:CA 证书是信任链的起点,浏览器或操作系统内置了多个可信 CA 证书。

  2. 签名其他证书:CA 使用其私钥对申请者的 SSL/TLS 证书进行签名,确保该证书的真实性。

  3. 防止伪造:只有被 CA 签名的证书才能被客户端(如浏览器)认为是可信的。

示例:

  • 常见的 CA 有:DigiCert、GlobalSign、Let's Encrypt、VeriSign 等。

  • 操作系统或浏览器中通常预装了这些 CA 的根证书。


二、SSL证书是什么?

SSL/TLS 证书 是一种用于加密客户端与服务器之间通信的数字证书,它绑定一个特定的域名或 IP 地址,并通过 CA 的签名来证明其合法性。

SSL证书的作用:

  1. 身份验证:证明网站的身份(如 example.com 属于某个组织)。

  2. 数据加密:在客户端和服务器之间建立加密连接(HTTPS)。

  3. 完整性保护:防止传输过程中的内容被篡改。


6. 什么是一级域名,什么是二级域名。

一、什么是一级域名(顶级域名)?

一级域名(Top-Level Domain,简称 TLD) 是域名系统中最高级别的域名,位于域名结构的最右边。它用于标识域名的类别或所属国家/地区。

  • .com:商业机构

  • .org:非营利组织

  • .net:网络服务提供商

  • .edu:教育机构(主要用于美国)

  • .gov:政府机构(主要用于美国)

  • .cn:中国国家顶级域名

  • .io:科技公司常用(原为英属印度洋领地)

特点:

  • ICANN(互联网名称与数字地址分配机构)统一管理;

  • 通常不能直接使用,需要在其下注册二级域名;

  • 比如你不能直接访问 .com,而是访问 example.com


二、什么是二级域名?

二级域名(Second-Level Domain,简称 SLD) 是紧接在一级域名(TLD)之下的域名层级,是用户实际注册和使用的部分。

域名

说明

example.com

.com 是一级域名,example 是二级域名

baidu.com

.com 是一级域名,baidu 是二级域名

pku.edu.cn

.edu.cn 是二级域名组合,pku 是三级域名

特点:

  • 用户可以在 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 证书

步骤如下:

  1. 打开证书管理器

    • Win + R,输入 mmc,回车;

    • 在 MMC 控制台中,点击菜单栏 文件 > 添加/删除管理单元

    • 选择 证书,点击 添加

    • 选择 计算机账户下一步完成确定

  2. 导入 CA 证书

    • 展开左侧树状结构:证书(本地计算机) > 受信任的根证书颁发机构

    • 右键点击 证书 文件夹 → 所有任务导入

    • 启动证书导入向导:

      • 下一步 → 浏览并选择你的 CA 证书文件(如 ca.crt);

      • 选择存储位置:受信任的根证书颁发机构

      • 完成导入。

  3. 验证是否成功

    • 打开浏览器访问使用该 CA 签发的 HTTPS 网站,应不再提示证书错误。

方法一:通过命令行添加信任

  1. 复制 CA 证书到系统证书目录

bash

sudo cp ca.crt /usr/local/share/ca-certificates/

  1. 更新系统信任库

bash

sudo update-ca-certificates

  • 该命令会自动将证书链接到 /etc/ssl/certs/ 并更新信任链。

  1. 验证是否生效

curl -v https://your-domain.com
  • 如果输出中显示 SSL certificate verify ok,表示信任已生效。


方法二:手动配置 OpenSSL 信任链(可选)

如果你的应用程序使用的是 OpenSSL 而非系统信任库,可能还需要手动指定信任的根证书:

  1. 创建一个信任链文件

cat ca.crt > /usr/local/etc/openssl/cert.pem
  1. 设置环境变量(可选)

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)

如果你的系统启用了防火墙,请开放 80818082 端口:

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 网关层

  • 高并发系统的请求分发

支持的算法(常见):

算法

描述

轮询(Round Robin)

默认方式,按顺序依次发送请求

最少连接(Least Connections)

发送给当前连接最少的服务器

IP 哈希(IP Hash)

根据客户端 IP 分配固定服务器(保持会话粘性)

加权轮询(Weighted Round Robin)

根据服务器性能分配不同权重

示例(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;
        }
    }
}

结对比表:

类型

谁使用

目标对象

主要用途

是否隐藏身份

示例场景

正向代理

客户端

外部服务器

访问控制、匿名浏览

隐藏客户端

浏览器代理、公司上网管控

反向代理

服务器

内部应用

请求过滤、SSL 终端、URL 重写

隐藏服务器

Web 服务统一入口、API 网关

负载均衡

服务器

多个后端服务器

分发请求、高可用、横向扩展

隐藏多个后端节点

高并发 Web 应用、微服务调用


常见组合使用示例:

在实际部署中,这三种技术常常一起使用:

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

会连接到两个站点中的其中一个。


13. 如何让Nginx支持百万并发,描述理论即可

模块

优化要点

系统内核

提升文件句柄数、TCP 参数调优、禁用交换分区

Nginx 配置

设置足够大的 worker_connections、关闭日志、启用 epoll

缓冲区

增大 TCP 读写缓冲区、合理设置客户端缓冲区

网络协议

启用 TFO、reuseport、调整 TIME_WAIT 行为

架构设计

多层负载均衡、分布式部署、使用 LVS/IPVS

监控与调优

实时监控连接数、响应时间、错误率等指标

以他人的幸福为幸福,以他人的享乐为享乐。