Nginx
Nginx 基本概念
Nginx(发音:Engine-X)是一个高性能的 HTTP 服务器和反向代理服务器,同时也可以用于负载均衡和静态资源服务。相比于传统的 Apache 服务器,Nginx 具有高并发、低内存占用和高扩展性的特点,因此被广泛用于 Web 服务器架构。
Nginx 的主要功能:
静态资源服务(如 HTML、CSS、JS、图片等)
反向代理(用于转发请求到后端服务器)
负载均衡(多台服务器均衡处理请求)
HTTPS 安全加密(使用 SSL 证书)
动静分离(将静态资源与动态请求分离,提高性能)
1. Nginx 反向代理
什么是反向代理?
反向代理(Reverse Proxy)指的是 Nginx 作为一个中间服务器,接收客户端请求,并将请求转发给后端的真实服务器,然后再把后端的响应返回给客户端。
这样做的好处:
隐藏后端服务器,提高安全性
支持负载均衡,提升系统性能
缓存静态资源,减少服务器压力
跨域代理,解决前端跨域问题
示例:Nginx 配置反向代理
假设你的后端服务运行在 http://localhost:8080,你希望通过 http://yourdomain.com/api/ 访问后端:
1 | server { |
说明:
proxy_pass http://localhost:8080/;把所有/api/的请求代理到http://localhost:8080/proxy_set_header用于转发请求头信息
2. Nginx 负载均衡
什么是负载均衡?
负载均衡(Load Balancing)是指将多个后端服务器组合在一起,Nginx 根据一定规则把请求分配给不同服务器,提高系统的并发能力和稳定性。
Nginx 负载均衡示例
假设有三台后端服务器:
192.168.1.10:8080192.168.1.11:8080192.168.1.12:8080
可以使用 Nginx 进行轮询(默认模式)的负载均衡:
1 | upstream backend_servers { |
负载均衡策略
Nginx 提供了几种负载均衡方式:
轮询(默认):请求依次分配给后端服务器
权重(weight):给部分服务器更高的请求比例
1 | upstream backend_servers { |
- 最少连接(least_conn):优先选择当前连接数最少的服务器
1 | upstream backend_servers { |
- IP 哈希(ip_hash):同一个 IP 的请求始终分配给同一台服务器
1 | upstream backend_servers { |
3. Nginx 配置 HTTPS(SSL 证书)
为什么要用 HTTPS?
HTTPS(HTTP + SSL/TLS)加密 HTTP 请求,提供:
数据加密,防止被窃听
数据完整性,防止中间人攻击
身份验证,防止钓鱼网站
申请 SSL 证书
你可以使用 Let’s Encrypt 申请免费 SSL 证书,或者在阿里云、腾讯云购买。
Nginx 配置 HTTPS
假设你的证书文件是:
证书文件:
/etc/nginx/ssl/yourdomain.com.crt私钥文件:
/etc/nginx/ssl/yourdomain.com.key
在 Nginx 配置中添加:
1 | server { |
说明
listen 443 ssl;监听 HTTPS 端口ssl_certificate和ssl_certificate_key指定 SSL 证书return 301 https://$host$request_uri;让 HTTP 自动跳转到 HTTPS
| 功能 | 配置方式 |
|---|---|
| 反向代理 | proxy_pass 转发请求到后端 |
| 负载均衡 | upstream 结合 proxy_pass 进行流量分配 |
| HTTPS | 配置 ssl_certificate 和 ssl_certificate_key 启用 HTTPS |
