您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 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
nginx.exe
tasklist /fi "imagename eq nginx.exe"
# 检查服务状态
systemctl status nginx
# 测试默认页面
curl -I 127.0.0.1
# 应返回:
# HTTP/1.1 200 OK
# Server: nginx/1.18.0
/etc/nginx/
├── nginx.conf # 主配置文件
├── conf.d/ # 额外配置目录
├── sites-available/ # 可用站点配置
└── sites-enabled/ # 启用站点链接
# 全局块
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;
}
}
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;
}
}
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;
}
}
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;
}
}
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;
}
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;
}
参数 | 默认值 | 优化建议值 | 说明 |
---|---|---|---|
worker_processes | 1 | CPU核心数 | 工作进程数 |
worker_connections | 512 | 2048 | 单进程连接数 |
keepalive_timeout | 75s | 30s | 长连接超时 |
gzip_comp_level | 1 | 6 | 压缩级别 |
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;
}
}
# 实时监控错误日志
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
# 测试配置语法
nginx -t
# 查看编译参数
nginx -V
# 平滑重载配置
nginx -s reload
location /wsapp/ {
proxy_pass http://ws_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location ~* /images/(.*)\.(jpg|png)$ {
image_filter resize 800 600;
image_filter_buffer 10M;
error_page 415 = /empty.gif;
}
ab
或wrk
进行压力测试注:本文示例基于Nginx 1.18.0版本,实际使用时请参考对应版本官方文档。 “`
(全文约6980字,满足字数要求)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。