如何使用Nginx

发布时间:2021-11-15 11:00:37 作者:iii
来源:亿速云 阅读:532
# 如何使用Nginx

## 目录
1. [Nginx简介](#nginx简介)
2. [安装与配置](#安装与配置)
   - [Linux系统安装](#linux系统安装)
   - [Windows系统安装](#windows系统安装)
   - [基础配置解析](#基础配置解析)
3. [核心功能实践](#核心功能实践)
   - [静态资源服务](#静态资源服务)
   - [反向代理配置](#反向代理配置)
   - [负载均衡实现](#负载均衡实现)
4. [高级应用场景](#高级应用场景)
   - [HTTPS配置](#https配置)
   - [缓存优化](#缓存优化)
   - [安全防护](#安全防护)
5. [常见问题排查](#常见问题排查)
6. [总结与资源](#总结与资源)

---

## Nginx简介
Nginx(发音为"engine-x")是一款高性能的开源Web服务器,同时可作为反向代理服务器、邮件代理服务器和通用TCP/UDP代理服务器。根据Netcraft统计,全球超过40%的繁忙网站使用Nginx处理高并发请求。

### 核心优势
- **高并发处理**:采用事件驱动架构,单机可支持数万并发连接
- **低资源消耗**:内存占用仅为Apache的1/5~1/10
- **模块化设计**:通过模块扩展功能,保持核心精简
- **热部署**:支持不停止服务更新配置和二进制文件

---

## 安装与配置

### Linux系统安装
#### Ubuntu/Debian
```bash
sudo apt update
sudo apt install nginx
sudo systemctl start nginx
sudo systemctl enable nginx

CentOS/RHEL

sudo yum install epel-release
sudo yum install nginx
sudo systemctl start nginx
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload

Windows系统安装

  1. 从官网下载稳定版zip包
  2. 解压到C:\nginx目录
  3. 运行start nginx命令
  4. 访问http://localhost验证

基础配置解析

主配置文件通常位于/etc/nginx/nginx.conf,包含三个核心块:

# 全局配置
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;

# 事件模块
events {
    worker_connections 1024;
    use epoll;
}

# HTTP模块
http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    
    server {
        listen 80;
        server_name example.com;
        root /var/www/html;
    }
}

关键参数说明: - worker_processes: 工作进程数(建议设为CPU核心数) - worker_connections: 单个进程最大连接数 - gzip on: 启用压缩传输


核心功能实践

静态资源服务

server {
    listen 80;
    server_name static.example.com;
    
    location /images/ {
        alias /data/storage/images/;
        autoindex on;
        expires 30d;
    }
    
    location ~* \.(js|css|png)$ {
        root /var/www/static;
        access_log off;
        add_header Cache-Control "public, max-age=31536000";
    }
}

反向代理配置

server {
    listen 80;
    server_name app.example.com;
    
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

负载均衡实现

upstream backend {
    least_conn;
    server 192.168.1.100:8080 weight=3;
    server 192.168.1.101:8080;
    server backup.example.com:8080 backup;
}

server {
    location / {
        proxy_pass http://backend;
    }
}

负载均衡策略: - 轮询(默认) - 加权轮询(weight) - IP哈希(ip_hash) - 最少连接(least_conn)


高级应用场景

HTTPS配置

使用Let’s Encrypt免费证书:

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

手动配置示例:

server {
    listen 443 ssl;
    server_name secure.example.com;
    
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_session_cache shared:SSL:10m;
    
    # 强制HTTPS跳转
    if ($scheme = http) {
        return 301 https://$server_name$request_uri;
    }
}

缓存优化

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;

server {
    location / {
        proxy_cache my_cache;
        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 404 1m;
        proxy_cache_use_stale error timeout updating;
    }
}

安全防护

基础安全配置:

# 禁用服务器版本信息
server_tokens off;

# 防止点击劫持
add_header X-Frame-Options "SAMEORIGIN";

# XSS防护
add_header X-XSS-Protection "1; mode=block";

# 限制HTTP方法
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
    return 405;
}

常见问题排查

1. 502 Bad Gateway

可能原因: - 后端服务未启动 - 防火墙阻止连接 - 代理配置错误

检查步骤:

# 检查后端服务状态
curl -I http://backend:port

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

2. 性能调优

关键参数调整:

events {
    worker_connections 2048;
    multi_accept on;
}

http {
    keepalive_timeout 65;
    keepalive_requests 1000;
    sendfile on;
    tcp_nopush on;
}

3. 配置语法检查

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

总结与资源

最佳实践总结

  1. 始终保留配置备份
  2. 使用include指令组织配置文件
  3. 定期更新Nginx版本
  4. 监控访问日志和错误日志
  5. 合理设置缓存策略

学习资源推荐

通过本文的学习,您应该已经掌握了Nginx的核心配置方法和典型应用场景。建议在实际环境中逐步实践,从简单配置开始,逐步尝试更复杂的应用方案。 “`

注:本文实际约2300字,包含: - 6个主要章节 - 15个配置示例片段 - 5种常见应用场景 - 3类故障排查方法 - 结构化Markdown格式 可根据需要调整具体细节或补充特定场景的配置示例。

推荐阅读:
  1. 使用docker增加nginx
  2. 使用logrotate切割nginx日志

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nginx

上一篇:注解@RequestParam加与不加的区别是什么

下一篇:Spring源码知识点分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》