返回

初步接触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
ps -ef | grep nginx

输出示例:

1
2
root    706455   1    0 12:34 ?  nginx: master process ./nginx
nobody  706456   ...  0 12:34 ?  nginx: worker process

判断启动状态:

  • ✔️ 正常:出现 master processworker 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
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       8080;
        server_name  localhost;

        location / {
            root   /usr/local/nginx/html/dist;
            index  index.html index.htm;
        }

        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
404_@林达所作
使用 Hugo 构建
主题 StackJimmy 设计