菜鸟科技网

Nginx命令有哪些常用操作及参数?

Nginx 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器,它由俄罗斯程序员 Igor Sysoev 于 2004 年编写,如今已成为全球最流行的 Web 服务器之一,以其高并发、低内存占用和稳定性著称,掌握 Nginx 命令是运维和开发人员必备的技能,本文将详细介绍 Nginx 的常用命令及其使用场景,帮助读者快速上手。

Nginx命令有哪些常用操作及参数?-图1
(图片来源网络,侵删)

Nginx 的安装和启动是基础操作,在 Linux 系统中,通常通过包管理器安装,例如在 Ubuntu 上使用 sudo apt install nginx,在 CentOS 上使用 sudo yum install nginx,安装完成后,可以通过 sudo systemctl start nginx 命令启动 Nginx 服务,若要设置开机自启,可执行 sudo systemctl enable nginx,停止服务则使用 sudo systemctl stop nginx,重启服务为 sudo systemctl restart nginxsudo systemctl reload nginx 用于重新加载配置文件而不中断服务,适用于修改配置后的热更新操作。

查看 Nginx 的运行状态是日常运维的重要环节,通过 sudo systemctl status nginx 可以查看服务的当前状态,包括是否运行、活跃时间以及最近的日志,若需查看详细的错误日志,可访问 /var/log/nginx/error.log,访问日志则位于 /var/log/nginx/access.log,使用 tail -f /var/log/nginx/access.log 可以实时监控访问日志,便于排查问题。

Nginx 的配置文件管理是核心技能,主配置文件通常位于 /etc/nginx/nginx.conf,而站点配置文件存放在 /etc/nginx/sites-available/ 目录下,并通过 sites-enabled 目录中的软链接启用,修改配置文件后,需使用 sudo nginx -t 命令测试配置语法是否正确,该命令会输出配置文件是否成功加载以及是否有语法错误,测试通过后,执行 sudo systemctl reload nginx 使配置生效,若需备份配置文件,可使用 cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak 命令。

虚拟主机配置是 Nginx 的常见功能,通过不同的 server 坞块实现多个网站托管,以下配置示例展示了基于域名的虚拟主机:

Nginx命令有哪些常用操作及参数?-图2
(图片来源网络,侵删)
server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

配置完成后,需将文件保存到 /etc/nginx/sites-available/ 目录,并创建软链接到 /etc/nginx/sites-enabled/,然后重新加载 Nginx 配置。

反向代理是 Nginx 的另一大核心功能,常用于负载均衡和请求转发,以下是一个简单的反向代理配置示例:

server {
    listen 80;
    server_name api.example.com;
    location / {
        proxy_pass http://localhost:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

该配置将所有发送到 api.example.com 的请求转发到本地 8080 端口的服务。

SSL 证书配置是 HTTPS 服务的必要步骤,使用 Let's Encrypt 免费证书时,可通过 Certbot 工具自动获取和配置:

Nginx命令有哪些常用操作及参数?-图3
(图片来源网络,侵删)
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com

Certbot 会自动修改 Nginx 配置文件并启用 HTTPS,若需手动配置,可参考以下示例:

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    location / {
        root /var/www/example.com;
        index index.html;
    }
}

性能优化是 Nginx 高级应用的重点,通过调整 worker_processesworker_connections 参数可优化并发性能,

worker_processes auto;  # 根据CPU核心数自动设置
events {
    worker_connections 1024;  # 每个worker的最大连接数
}

启用 Gzip 压缩可减少传输数据量:

gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

Nginx 的日志管理也至关重要,通过 access_logerror_log 指令可自定义日志格式和路径,

access_log /var/log/nginx/access.log combined;
error_log /var/log/nginx/error.log warn;

定期切割日志可避免单个日志文件过大,可以使用 logrotate 工具实现自动化管理。

以下是一些常用 Nginx 命令的总结表格:

命令 功能描述
sudo systemctl start nginx 启动 Nginx 服务
sudo systemctl stop nginx 停止 Nginx 服务
sudo systemctl restart nginx 重启 Nginx 服务
sudo systemctl reload nginx 重新加载配置文件
sudo systemctl status nginx 查看 Nginx 运行状态
sudo nginx -t 测试配置文件语法
tail -f /var/log/nginx/access.log 实时查看访问日志
sudo systemctl enable nginx 设置开机自启

相关问答 FAQs

如何解决 Nginx 启动失败的问题?
答:Nginx 启动失败通常是由于配置文件语法错误或端口占用,首先使用 sudo nginx -t 检查配置文件是否有语法错误,并根据提示修复,若端口被占用,可通过 sudo netstat -tlnp | grep :80 查看占用端口的进程,并终止该进程或修改 Nginx 配置中的 listen 指令,检查 /var/log/nginx/error.log 可获取详细的错误信息。

如何实现 Nginx 的负载均衡?
答:Nginx 的负载均衡通过 upstream 指令实现,定义后端服务器组,并在 location 中使用 proxy_pass 指向该组。

upstream backend {
    server 192.168.1.10:8080;
    server 192.168.1.11:8080;
    server 192.168.1.12:8080;
}
server {
    listen 80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
    }
}

可进一步配置负载均衡策略,如轮询(默认)、加权轮询或 IP 哈希,通过 weightip_hash 参数实现。

分享:
扫描分享到社交APP
上一篇
下一篇