一、Nginx常用命令
1.1 启动 Nginx
要启动 Nginx 服务,可以使用以下命令:
sudo systemctl start nginx
1.2 停止 Nginx
如果需要停止 Nginx 服务,可以使用以下命令:
sudo systemctl stop nginx
1.3 重启 Nginx
在修改了 Nginx 配置文件后,需要重启 Nginx 以使更改生效。可以使用以下命令:
sudo systemctl restart nginx
1.4 重新加载配置
当修改了配置文件,但不希望停止服务时,可以使用以下命令重新加载配置:
sudo systemctl reload nginx
1.5 查看 Nginx 状态
要查看 Nginx 的当前运行状态,可以使用以下命令:
sudo systemctl status nginx
这将显示 Nginx 是否正在运行,以及其相关信息。
1.6 测试配置文件
在修改 Nginx 配置文件后,可以使用以下命令测试配置的正确性:
sudo nginx -t
如果配置文件正确,会返回 "syntax is ok" 和 "test is successful" 的信息。如果有错误,则会给出具体的错误信息和所在的配置文件行数。
1.7 查看 Nginx 日志
Nginx 的错误日志和访问日志通常位于 /var/log/nginx
目录中。以下命令可以实时查看错误日志:
tail -f /var/log/nginx/error.log
访问日志可以使用类似的命令查看:
tail -f /var/log/nginx/access.log
1.8 查看 Nginx 进程
要查看当前运行的 Nginx 进程,可以使用以下命令:
ps aux | grep nginx
这将列出所有 Nginx 相关的进程信息,包括主进程和工作进程。
1.9 配置 Nginx 开机自启动
要设置 Nginx 在系统启动时自动启动,可以使用以下命令:
sudo systemctl enable nginx
1.10 禁用 Nginx 开机自启动
如果需要禁用 Nginx 在系统启动时自动启动,可以使用以下命令:
sudo systemctl disable nginx
二、在 CentOS 上部署 Nginx
2.1 安装 Nginx
在 CentOS 上安装 Nginx 可以通过 EPEL(Extra Packages for Enterprise Linux)仓库或源代码编译来完成。下面介绍使用 yum 安装的方法:
# 安装 EPEL 仓库
sudo yum install epel-release
# 安装 Nginx
sudo yum install nginx
# 启动 Nginx
sudo systemctl start nginx
# 设置开机自启动
sudo systemctl enable nginx
2.2 验证安装
安装完成后,可以通过以下命令检查 Nginx 的状态:
sudo systemctl status nginx
然后在浏览器中输入 http://your_server_ip
,如果看到 Nginx 的欢迎页面,说明安装成功。
2.3 Nginx 配置文件
Nginx 的主配置文件通常位于 /etc/nginx/nginx.conf
。下面是一个基本的配置示例:
worker_processes auto;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html; # 静态文件路径
index index.html index.htm; # 默认首页
}
error_page 404 /404.html; # 自定义404页面
location = /404.html {
internal;
}
}
}
三、在 Docker 中部署 Nginx
3.1 Docker 安装
首先,需要在 CentOS 上安装 Docker:
# 更新 yum
sudo yum update
# 安装必要的依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 Docker 官方的 yum 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker
sudo yum install docker-ce
# 启动 Docker
sudo systemctl start docker
# 设置开机自启动
sudo systemctl enable docker
3.2 拉取 Nginx 镜像
sudo docker pull nginx
3.3 运行 Nginx 容器
以下是启动 Nginx 容器的命令:
sudo docker run --name my-nginx -p 80:80 -d nginx
此命令将 Nginx 运行在后台并映射到宿主机的 80 端口。
四、Docker 挂载 HTML 文件实现实时刷新数据
在实际开发中,我们可能需要实时更新 Nginx 提供的静态资源。可以通过 Docker 的挂载功能来实现这一点。
4.1 准备 HTML 文件
创建一个 HTML 文件夹,并在其中添加一个简单的 HTML 文件。
mkdir ~/nginx-html
echo "<h1>Hello, Nginx!</h1>" > ~/nginx-html/index.html
4.2 启动 Nginx 容器并挂载目录
使用以下命令启动 Nginx 容器,同时将宿主机的 HTML 文件夹挂载到容器内:
sudo docker run --name my-nginx -p 80:80 -v ~/nginx-html:/usr/share/nginx/html -d nginx
在这个命令中,-v ~/nginx-html:/usr/share/nginx/html
将宿主机的 ~/nginx-html
目录挂载到 Nginx 容器的 /usr/share/nginx/html
目录中。
4.3 实时刷新数据
修改 ~/nginx-html/index.html
文件的内容,Nginx 会自动加载新的内容。比如可以添加如下内容:
<h1>Hello, Nginx! Updated!</h1>
保存文件后,刷新浏览器,即可看到更新的内容。
五、使用 Nginx 的数据分析系统案例
在数据分析系统中,Nginx 可以用作静态文件服务器和反向代理,以提高系统的性能和安全性。以下是一个简单的使用案例:
5.1 场景描述
假设我们有一个数据分析系统,前端使用 React 构建,后端使用 Node.js 提供 API。我们希望通过 Nginx 将静态文件和 API 请求分发到不同的服务。
5.2 Nginx 配置示例
server {
listen 80;
server_name analytics.example.com;
# 静态文件服务
location / {
root /usr/share/nginx/html; # 前端构建的静态文件路径
index index.html;
try_files $uri $uri/ /index.html;
}
# 反向代理到 Node.js 后端
location /api {
proxy_pass http://localhost:3000; # Node.js 服务地址
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
六、性能优化
在高并发场景中,优化 Nginx 的性能是非常重要的。以下是一些常见的优化方法:
6.1 调整工作进程和连接数
根据服务器的 CPU 核心数调整 worker_processes
和 worker_connections
参数:
worker_processes auto; # 自动设置为 CPU 核心数
worker_connections 2048; # 增加最大连接数
6.2 开启缓存
通过启用缓存,减轻后端服务器的压力:
proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;
6.3 压缩传输
通过开启 gzip 压缩,减少数据传输量:
gzip on;
gzip_types text/plain application/json application/javascript text/css;
gzip_min_length 1000; # 只有大于1000字节的文件才进行压缩