初步接触 Nginx
什么是 Nginx?
Nginx(engine x) 是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 邮件代理服务器。
由 Igor Sysoev 编写,最初用于俄罗斯访问量最大的网站之一。如今,它广泛应用于各类网站的:
- 静态资源服务(如 HTML、CSS、JS、图片等)
 
- 反向代理(把请求转发到后端服务)
 
- 负载均衡(分发请求以提升性能与可用性)
 
- HTTPS / SSL 支持
 
- 动态请求的缓存与压缩处理
 
为什么使用 Nginx?
Nginx 被广泛采用的原因包括:
- 🚀 高性能:可以支撑成千上万个并发连接
 
- ⚙️ 资源占用小:内存占用远低于 Apache
 
- 🔁 反向代理 + 负载均衡:非常适合部署在微服务架构中
 
- 🔒 支持 HTTPS / SSL
 
- 🔧 模块化配置:配置灵活,易于扩展
 
安装 Nginx
1. 安装依赖
1
2
3
4
  | 
yum install gcc gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
  | 
 
2. 下载并解压 Nginx
1
2
3
4
  | 
cd /usr/local
wget http://nginx.org/download/nginx-1.22.1.tar.gz
tar -zxvf nginx-1.22.1.tar.gz
cd nginx-1.22.1
  | 
 
3. 编译安装
1
2
3
  | 
./configure --with-http_ssl_module  # 添加 SSL 模块支持
make                                 # 编译
make install                         # 安装
  | 
 
🚀 常用命令整理
在 /usr/local/nginx/sbin 目录下运行:
1
2
3
  | 
./nginx              # 启动 Nginx
./nginx -s reload    # 热重载配置
./nginx -s stop      # 停止 Nginx
  | 
 
检查是否启动成功
输出示例:
1
2
  | 
root    706455   1    0 12:34 ?  nginx: master process ./nginx
nobody  706456   ...  0 12:34 ?  nginx: worker process
  | 
 
判断启动状态:
- ✔️ 正常:出现 
master process 和 worker process 
- ❌ 异常:只有 
master 没有 worker,说明配置有误 
- ⚠️ 多个进程:说明重复启动了,建议先执行 
pkill nginx 
配置与测试
📄 配置文件示例(nginx.conf)
路径:/usr/local/nginx/conf/nginx.conf
 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
  | 
# 定义工作进程数量,通常设置为 CPU 核心数,这里示例用1
worker_processes  1;
events {
    # 每个工作进程允许的最大连接数(含客户端和服务器端连接)
    worker_connections  1024;
}
http {
    # 引入 MIME 类型映射文件,用来识别文件扩展名对应的内容类型
    include       mime.types;
    # 默认的 MIME 类型,文件类型未匹配时使用
    default_type  application/octet-stream;
    # 启用高效文件传输方式,减少系统调用次数
    sendfile        on;
    # 连接保持活动的超时时间(秒),超过此时间关闭连接
    keepalive_timeout  65;
    server {
        # 监听端口8080,HTTP服务默认端口是80,这里改为8080示例
        listen       8080;
        # 服务器名称,支持域名或IP,这里用localhost作为本机测试
        server_name  localhost;
        location / {
            # 网站根目录,Nginx 会从这里查找文件
            root   /usr/local/nginx/html/dist;
            # 默认首页文件,访问目录时默认加载的文件
            index  index.html index.htm;
        }
        # 定义错误页面,当出现500、502、503、504错误时,跳转到该页面
        error_page   500 502 503 504  /50x.html;
    }
}
  | 
 
测试是否成功
1
  | 
curl http://<你的公网IP>:8080
  | 
 
- 如果返回页面内容,说明 Nginx 成功响应
 
- 否则检查防火墙 / 端口是否开放
 
⚠️ 注意事项
- 监听端口为 8080(非默认 80),需特别注意防火墙设置
 
- 如果你使用的是 阿里云服务器,请在控制台:
- 找到安全组 → 编辑入方向规则 → 开放 8080 端口
 
 
即使云服务器厂商(如阿里云、腾讯云等)的“安全组”已经开放端口,如果 服务器操作系统内部 还有防火墙规则没有放行对应端口,也会导致无法访问。
 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
38
39
40
41
42
43
44
45
46
47
48
  | 
systemctl status firewalld
# 若正在运行,执行查看端口开放情况
firewall-cmd --list-all
# 若未开放指定端口,可执行
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --reload
# 再次执行查看端口开放情况
firewall-cmd --list-all
##实操
[root@iZbp15al0g417943ohz4h1Z ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 20/tcp 21/tcp 22/tcp 80/tcp 443/tcp 8888/tcp 39000-40000/tcp 9999/tcp 8080/tcp # 没有8989端口
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
[root@iZbp15al0g417943ohz4h1Z ~]# firewall-cmd --permanent --add-port=8989/tcp
success
[root@iZbp15al0g417943ohz4h1Z ~]# firewall-cmd --reload
^[[Asuccess
[root@iZbp15al0g417943ohz4h1Z ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: cockpit dhcpv6-client ssh
  ports: 20/tcp 21/tcp 22/tcp 80/tcp 443/tcp 8888/tcp 39000-40000/tcp 9999/tcp 8080/tcp 8989/tcp
  protocols: 
  forward: no
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules: 
  | 
 
- 若你更喜欢默认 HTTP 端口 
80,可将 listen 8080 改为 listen 80 
Nginx 配置 lindablog.xyz 域名启用 HTTPS
一、准备条件
- 部署项目文件位置:
/usr/local/nginx/html/dist 
- 阿里云申请 SSL 凭证档案(我申请的是免费证书3月一换):
jnalindablog.xyz.pem(凭证) 
jnalindablog.xyz.key(私钥) 
 
二、建立 SSL 凭证目录并上传ssl凭证档案
1
  | 
mkdir -p /usr/local/nginx/ssl
  | 
 
三、撰写 Nginx HTTPS 配置档
在 /usr/local/nginx/conf/nginx.conf 中加入:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
  | 
worker_processes 1;
events {
    worker_connections 1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout 65;
    # 加入這一行:引用你自定義的 server 配置檔案
    include /usr/local/nginx/conf/conf.d/*.conf;
}
  | 
 
在 /usr/local/nginx/conf/conf.d/lindablog.conf 中加入:
 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 {
    # 监听 443 端口并启用 SSL/TLS,提供 HTTPS 服务
    listen 443 ssl;
    # 服务器域名,配置成你的网站域名
    server_name lindablog.xyz;
    # SSL 证书文件路径,公钥证书
    ssl_certificate     /usr/local/nginx/ssl/jnalindablog.xyz.pem;
    # SSL 私钥文件路径,和证书匹配的私钥
    ssl_certificate_key /usr/local/nginx/ssl/jnalindablog.xyz.key;
    # 允许使用的 TLS 协议版本,推荐启用 1.2 和 1.3
    ssl_protocols TLSv1.2 TLSv1.3;
    # 加密套件,排除掉弱加密算法,确保连接安全
    ssl_ciphers HIGH:!aNULL:!MD5;
    # 网站根目录,存放前端静态文件
    root /usr/local/nginx/html/dist;
    # 默认首页文件,访问根路径时默认加载
    index index.html;
    location / {
        # try_files 尝试访问请求的 URI,如果不存在,则返回 index.html
        # 主要用于 SPA(单页应用)支持路由刷新
        try_files $uri $uri/ /index.html;
    }
}
server {
    # 监听 HTTP 的 80 端口,用于重定向所有请求到 HTTPS
    listen 80;
    # 服务器域名
    server_name lindablog.xyz;
    # 所有访问 80 端口的请求,都重定向(301永久重定向)到对应的 HTTPS 地址
    return 301 https://$host$request_uri;
}
  | 
 
四、测试与重载 Nginx
1
2
  | 
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
  | 
 
五、验证 HTTPS 启用
- 浏览器访问 
https://lindablog.xyz,网址列显示锁头符号 🔒 
- 点击锁头查看凭证细节或者右键检查找到隐私与安全
 
- 使用线上工具检查:
 
备注