Nginx 常用命令大全

Nginx 常用命令大全

_

一、系统服务管理(systemctl)

# 启动 Nginx
sudo systemctl start nginx

# 停止 Nginx
sudo systemctl stop nginx

# 重启 Nginx
sudo systemctl restart nginx

# 重新加载配置(平滑重启,不中断服务)
sudo systemctl reload nginx

# 查看运行状态
sudo systemctl status nginx

# 开机自启动
sudo systemctl enable nginx

# 取消开机自启动
sudo systemctl disable nginx

# 重新启动并查看启动日志
sudo systemctl restart nginx --no-pager

二、配置测试与检查

# 测试配置文件语法
sudo nginx -t

# 测试配置并显示详细信息
sudo nginx -T

# 检查默认配置文件路径
sudo nginx -t 2>&1 | grep "configuration file"

# 验证特定配置文件
sudo nginx -t -c /path/to/nginx.conf

三、信号控制(直接发送信号)

# 重新加载配置(等同于 systemctl reload)
sudo nginx -s reload

# 快速关闭 Nginx
sudo nginx -s stop

# 优雅关闭 Nginx(等待当前请求处理完成)
sudo nginx -s quit

# 重新打开日志文件(日志切割后使用)
sudo nginx -s reopen

四、日志查看

# 查看访问日志
sudo tail -f /var/log/nginx/access.log

# 查看错误日志
sudo tail -f /var/log/nginx/error.log

# 查看最后 100 行访问日志
sudo tail -n 100 /var/log/nginx/access.log

# 查看最后 100 行错误日志
sudo tail -n 100 /var/log/nginx/error.log

# 实时监控错误日志
sudo tail -f /var/log/nginx/error.log | grep --color=auto "error"

# 查看所有日志文件
ls -la /var/log/nginx/

# 日志切割
sudo logrotate -f /etc/logrotate.d/nginx

五、站点配置管理

# 查看启用的站点
ls -la /etc/nginx/sites-enabled/

# 查看可用的站点配置
ls -la /etc/nginx/sites-available/

# 启用站点(创建符号链接)
sudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/

# 禁用站点(删除符号链接)
sudo rm /etc/nginx/sites-enabled/mysite.com

# 编辑站点配置
sudo nano /etc/nginx/sites-available/mysite.com

# 编辑主配置文件
sudo nano /etc/nginx/nginx.conf

六、SSL 证书管理

# 查看证书内容
sudo openssl x509 -in /path/to/cert.pem -noout -text

# 查看证书有效期
sudo openssl x509 -in /path/to/cert.pem -noout -dates

# 查看证书主题
sudo openssl x509 -in /path/to/cert.pem -noout -subject

# 测试 SSL 配置
sudo nginx -t

# 检查 SSL 证书和私钥是否匹配
sudo openssl x509 -noout -modulus -in /path/to/cert.pem | sudo openssl md5
sudo openssl rsa -noout -modulus -in /path/to/key.pem | sudo openssl md5

七、性能监控

# 查看 Nginx 进程
ps aux | grep nginx

# 查看 Nginx 监听的端口
sudo netstat -tlnp | grep nginx
sudo ss -tlnp | grep nginx

# 查看 Nginx 连接数
sudo netstat -an | grep :80 | wc -l

# 实时监控连接状态
sudo watch -n 1 'netstat -an | grep :80 | awk '{print $6}' | sort | uniq -c'

# 查看请求统计(需要 stub_status 模块)
curl http://localhost/nginx_status

八、故障排查

# 检查配置文件错误详情
sudo nginx -t

# 查看详细错误日志
sudo tail -100 /var/log/nginx/error.log

# 检查端口占用
sudo lsof -i :80
sudo lsof -i :443

# 检查防火墙状态
sudo ufw status

# 测试配置文件包含路径
sudo nginx -T | grep "include"

# 检查文件权限
ls -la /var/log/nginx/
ls -la /etc/nginx/

# 测试反向代理连接
curl -I http://localhost
curl -I https://localhost

九、访问控制与安全

# 查看当前 IP 连接数
sudo netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

# 查看最活跃的 IP 地址
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

# 封禁 IP(在配置文件中添加)
# 在 server 块中添加:
# deny 192.168.1.1;
# deny 192.168.1.0/24;

# 查看请求最多的 URL
sudo awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10

# 查看 HTTP 状态码分布
sudo awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -nr

十、缓存管理

# 清除 Nginx 缓存
sudo rm -rf /var/cache/nginx/*

# 查看缓存目录大小
sudo du -sh /var/cache/nginx/

# 重新创建缓存目录
sudo mkdir -p /var/cache/nginx/
sudo chown -R nginx:nginx /var/cache/nginx/

十一、Docker 容器中的 Nginx

# 查看容器内 Nginx 状态
docker exec <容器名> nginx -t

# 重启容器内 Nginx
docker exec <容器名> nginx -s reload

# 查看容器内日志
docker logs <容器名>

# 进入容器调试
docker exec -it <容器名> bash

# 复制配置文件到容器
docker cp nginx.conf <容器名>:/etc/nginx/nginx.conf

# 从容器复制配置文件
docker cp <容器名>:/etc/nginx/nginx.conf ./nginx.conf

十二、常用配置示例

反向代理配置

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        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;
    }
}

静态文件服务

server {
    listen 80;
    server_name example.com;
    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

    # 启用 gzip 压缩
    gzip on;
    gzip_types text/plain text/css application/json application/javascript;
}

HTTPS 配置

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/fullchain.pem;
    ssl_certificate_key /etc/ssl/certs/privkey.pem;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

十三、快速参考

命令

说明

sudo systemctl start nginx

启动

sudo systemctl stop nginx

停止

sudo systemctl restart nginx

重启

sudo systemctl reload nginx

平滑重载

sudo systemctl status nginx

查看状态

sudo nginx -t

测试配置

sudo nginx -s reload

信号重载

sudo tail -f /var/log/nginx/error.log

查看错误日志

sudo ln -s /etc/nginx/sites-available/x /etc/nginx/sites-enabled/

启用站点

sudo rm /etc/nginx/sites-enabled/x

禁用站点

GeminiWorkflow 中的 IndexedDB 图片缓存实践 2026-02-06
Docker 常用命令大全 2026-02-03

评论区