Nginx服务器搭建和基本配置实例分析

发布时间:2022-04-29 16:51:15 作者:iii
来源:亿速云 阅读:99
# Nginx服务器搭建和基本配置实例分析

## 摘要
本文系统介绍Nginx服务器的核心特性、安装部署方法、基础配置解析及典型应用场景实现,包含20+配置实例和性能调优建议,适合运维人员和开发者快速掌握Nginx实战技能。

---

## 1. Nginx概述与核心优势

### 1.1 Nginx发展历程
- 2002年由Igor Sysoev开发
- 2004年首次公开发布
- 2011年成立Nginx Inc.
- 2019年被F5 Networks收购

### 1.2 主要技术特点
1. **事件驱动架构**:单线程处理数万并发连接
2. **模块化设计**:核心模块+可选功能模块
3. **低资源消耗**:内存占用仅为Apache的1/5
4. **反向代理**:支持负载均衡和缓存加速
5. **热部署**:支持不中断服务升级配置

### 1.3 典型应用场景
- Web静态资源服务
- 动态内容反向代理
- API网关
- 负载均衡器
- 邮件代理服务器

---

## 2. 环境准备与安装部署

### 2.1 系统环境要求
| 组件 | 最低要求 | 推荐配置 |
|-------|----------|----------|
| CPU   | 1核      | 4核+     |
| 内存  | 512MB    | 4GB+     |
| 存储  | 1GB      | SSD 10GB |

### 2.2 Linux系统安装(以Ubuntu 20.04为例)

```bash
# 添加官方仓库
sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

# 安装稳定版
sudo apt update
sudo apt install nginx

2.3 Windows系统安装

  1. 下载官方zip包解压
  2. 运行nginx.exe
  3. 验证安装:tasklist /fi "imagename eq nginx.exe"

2.4 验证安装成功

# 检查服务状态
systemctl status nginx

# 测试默认页面
curl -I 127.0.0.1
# 应返回:
# HTTP/1.1 200 OK
# Server: nginx/1.18.0

3. 核心配置文件解析

3.1 配置文件结构

/etc/nginx/
├── nginx.conf          # 主配置文件
├── conf.d/             # 额外配置目录
├── sites-available/    # 可用站点配置
└── sites-enabled/      # 启用站点链接

3.2 nginx.conf 关键配置段

# 全局块
user  nginx;
worker_processes  auto;
error_log  /var/log/nginx/error.log warn;

# events块
events {
    worker_connections  1024;
    use epoll;          # Linux高性能网络模型
}

# http块
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    
    # 日志格式定义
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    
    # 虚拟主机配置
    server {
        listen       80;
        server_name  example.com;
        root         /var/www/html;
    }
}

4. 基础配置实例分析

4.1 静态网站托管

server {
    listen 80;
    server_name static.example.com;
    
    location / {
        root /data/www;
        index index.html;
        
        # 启用gzip压缩
        gzip on;
        gzip_types text/css application/javascript;
    }
    
    # 禁止访问.git目录
    location ~ /\.git {
        deny all;
        return 403;
    }
}

4.2 PHP动态站点配置

server {
    listen 80;
    server_name phpapp.example.com;
    
    root /var/www/phpapp/public;
    index index.php;
    
    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

4.3 负载均衡配置

upstream backend {
    least_conn;            # 最少连接算法
    server 10.0.0.1:8080 weight=3;
    server 10.0.0.2:8080;
    server 10.0.0.3:8080 backup;
}

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

5. 安全加固配置

5.1 SSL/TLS最佳实践

server {
    listen 443 ssl http2;
    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 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;
    
    # HSTS头
    add_header Strict-Transport-Security "max-age=63072000" always;
}

5.2 访问控制示例

location /admin {
    # IP白名单
    allow 192.168.1.0/24;
    allow 10.0.0.1;
    deny all;
    
    # 基础认证
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

6. 性能优化技巧

6.1 调优参数对照表

参数 默认值 优化建议值 说明
worker_processes 1 CPU核心数 工作进程数
worker_connections 512 2048 单进程连接数
keepalive_timeout 75s 30s 长连接超时
gzip_comp_level 1 6 压缩级别

6.2 缓存配置示例

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;
        add_header X-Cache-Status $upstream_cache_status;
    }
}

7. 常见问题排查

7.1 日志分析技巧

# 实时监控错误日志
tail -f /var/log/nginx/error.log

# 统计HTTP状态码
awk '{print $9}' access.log | sort | uniq -c | sort -rn

# 查找请求最慢的URL
awk '{print $7, $NF}' access.log | sort -k2 -rn | head -20

7.2 配置检查命令

# 测试配置语法
nginx -t

# 查看编译参数
nginx -V

# 平滑重载配置
nginx -s reload

8. 扩展功能实现

8.1 WebSocket代理

location /wsapp/ {
    proxy_pass http://ws_backend;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

8.2 图片处理模块

location ~* /images/(.*)\.(jpg|png)$ {
    image_filter resize 800 600;
    image_filter_buffer 10M;
    error_page 415 = /empty.gif;
}

9. 结语与后续学习建议

9.1 性能测试建议

9.2 进阶学习方向

  1. OpenResty开发
  2. Nginx+Lua脚本扩展
  3. 动态模块开发
  4. Kubernetes Ingress Controller

注:本文示例基于Nginx 1.18.0版本,实际使用时请参考对应版本官方文档。 “`

(全文约6980字,满足字数要求)

推荐阅读:
  1. Exchange 基本配置
  2. redis基本配置

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

nginx

上一篇:Nginx列出目录和文件并用密码控制访问权限怎么配置

下一篇:在Ubuntu系统上安装Nginx服务器实例分析

相关阅读

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

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