多人一起做视频网站/电商网站网址
Nginx基础讲解
Nginx 是一款高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、静态资源托管、SSL 终端等场景。以下是对 Nginx 的详细讲解:
1. Nginx 核心概念
事件驱动架构:基于异步非阻塞模型,高效处理高并发连接,资源占用低。
模块化设计:支持通过模块扩展功能(如 HTTP、Stream、gRPC 等)。
反向代理:接收客户端请求并转发至后端服务器,隐藏后端细节。
负载均衡:将流量分发到多个服务器,提升系统可用性和性能
2. 安装与配置
2.1 安装
- Ubuntu/Debian:
sudo apt update
sudo apt install nginx
- CentOS/RHEL:
sudo yum install epel-release
sudo yum install nginx
- 源码编译(定制化强):
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make && make install
2.2 配置文件结构
主配置文件通常为 /etc/nginx/nginx.conf
,结构如下:
# 全局配置
user nginx;
worker_processes auto; # 工作进程数(建议设置为 CPU 核心数)events {worker_connections 1024; # 单个进程最大连接数
}
http {# HTTP 相关配置include /etc/nginx/mime.types;server {listen 80;server_name example.com;root /var/www/html;location / {index index.html;}}
}
3. 核心功能配置
3.1 静态文件服务
server {listen 80;server_name example.com;root /var/www/html; # 静态文件根目录location / {try_files $uri $uri/ =404; # 尝试按路径查找文件}location /images/ {alias /var/www/images/; # 路径别名(替换匹配部分)}
}
3.2 反向代理
server {listen 80;server_name example.com;location / {proxy_pass http://backend_server; # 转发到后端proxy_set_header Host $host; # 传递原始 Host 头proxy_set_header X-Real-IP $remote_addr;}
}# 定义后端服务器组
upstream backend_server {server 192.168.1.1:8080;server 192.168.1.2:8080;
}
3.3 负载均衡策略
- 轮询(默认) :依次分发请求。
- 权重(weight) :按权重分配流量。
- IP 哈希(ip_hash) :同一客户端 IP 固定到同一后端。
- 最少连接(least_conn) :优先发给连接数最少的后端
upstream backend {ip_hash;server 192.168.1.1:8080 weight=2; # 权重为2server 192.168.1.2:8080;server 192.168.1.3:8080 backup; # 备用服务器
}
3.4 SSL/TLS 配置
server {listen 443 ssl;server_name example.com;ssl_certificate /etc/ssl/certs/example.com.crt;ssl_certificate_key /etc/ssl/private/example.com.key;# 安全增强配置ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;location / {proxy_pass http://backend;}
}
# HTTP 重定向到 HTTPS
server {listen 80;server_name example.com;return 301 https://$host$request_uri;
}
4. 高级配置
4.1 URL 重写
location /old {rewrite ^/old/(.*) /new/$1 permanent; # 301 重定向
}# 条件重写(如移动端跳转)
if ($http_user_agent ~* "mobile") {rewrite ^(.*)$ /mobile/$1 break;
}
4.2 访问控制
location /admin {allow 192.168.1.0/24;deny all;auth_basic "Restricted";auth_basic_user_file /etc/nginx/.htpasswd; # 密码文件
}
4.3 跨域(CORS)
location /api {add_header 'Access-Control-Allow-Origin' 'http://client.com';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'Content-Type, Authorization';
}