目录
[4.HTTPS 配置(SSL 证书部署)](#4.HTTPS 配置(SSL 证书部署))
一、环境准备
bash
# 安装依赖
yum install -y gcc pcre-devel zlib-devel openssl-devel
# 安装Nginx
yum install -y nginx
# 启动并设置开机自启
systemctl start nginx
systemctl enable nginx
# 验证安装
nginx -v
Nginx 的核心配置文件路径:
- 主配置文件:
/etc/nginx/nginx.conf - 站点配置文件:
/etc/nginx/conf.d/(推荐将不同功能的配置放在这里,而非直接修改主配置) - 默认网页根目录:
/usr/share/nginx/html
二、常见功能部署
1.静态资源服务(最基础功能)
用于部署前端静态页面(HTML/CSS/JS/ 图片等),是 Nginx 最常用的场景之一。
配置示例:
新建配置文件 /etc/nginx/conf.d/static.conf:
bash
server {
# 监听80端口
listen 80;
# 访问域名(可改为你的域名或服务器IP)
server_name static.example.com;
# 静态资源根目录
root /data/static;
# 默认首页
index index.html index.htm;
# 静态资源缓存优化(可选)
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
# 缓存有效期7天
expires 7d;
# 关闭日志(减少IO)
access_log off;
}
# 防止访问隐藏文件(如.git/.env)
location ~ /\. {
deny all;
}
}
2.反向代理(前后端分离必备)
将客户端请求转发到后端应用服务器(如 Java/Node.js/Python 服务),隐藏后端服务地址,统一入口。
配置示例:
新建配置文件 /etc/nginx/conf.d/proxy.conf:
bash
server {
listen 80;
server_name api.example.com;
# 反向代理到后端服务(如Node.js的3000端口)
location / {
# 后端服务地址
proxy_pass http://127.0.0.1:3000;
# 传递真实客户端IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 超时配置(防止后端响应慢导致连接断开)
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
}
}
3.负载均衡(多后端服务分流)
当后端有多个服务实例时,通过 Nginx 实现请求分发,提高系统可用性和性能。
配置示例:
新建配置文件 /etc/nginx/conf.d/load_balance.conf:
bash
# 定义后端服务集群
upstream backend_servers {
# 加权轮询(weight越大,分配的请求越多)
server 192.168.1.100:8080 weight=5;
server 192.168.1.101:8080 weight=3;
server 192.168.1.102:8080 backup; # 备用节点(主节点故障时启用)
# 可选负载均衡策略:
# ip_hash; # 按客户端IP哈希,保证同一客户端请求到同一节点(解决session问题)
# least_conn; # 最少连接数优先
}
server {
listen 80;
server_name app.example.com;
location / {
# 代理到后端集群
proxy_pass http://backend_servers;
# 反向代理通用配置(同反向代理部分)
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
4.HTTPS 配置(SSL 证书部署)
将 HTTP 转为 HTTPS,保障数据传输安全,是生产环境的必备配置。
配置示例:
新建配置文件 /etc/nginx/conf.d/https.conf:
bash
server {
# 监听443端口(HTTPS默认端口)
listen 443 ssl http2;
server_name www.example.com;
# SSL证书路径(替换为你的证书文件)
ssl_certificate /etc/nginx/ssl/example.com.crt;
ssl_certificate_key /etc/nginx/ssl/example.com.key;
# SSL优化配置
ssl_protocols TLSv1.2 TLSv1.3; # 仅启用安全的TLS版本
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
ssl_prefer_server_ciphers on;
ssl_session_timeout 10m;
ssl_session_cache shared:SSL:10m;
# 强制HTTP跳转HTTPS(可选)
server {
listen 80;
server_name www.example.com;
return 301 https://$host$request_uri;
}
# 业务配置(如静态资源/反向代理)
location / {
root /data/www;
index index.html;
}
}
5.上传下载配置
配置一个支持文件上传和下载的服务器。
配置示例:
新建 /etc/nginx/conf.d/file_server.conf,配置内容如下(包含下载、上传接口代理、安全限制):
bash
server {
listen 80;
# 替换为你的域名/服务器IP
server_name file.example.com;
# 根目录指向文件存储路径
root /data/file_server;
index index.html;
# ========== 核心配置:文件下载 ==========
location /download/ {
# 开启文件下载功能
autoindex on; # 开启目录浏览
autoindex_exact_size on; # 显示人性化的文件大小(KB/MB)
autoindex_localtime on; # 显示本地时间
# 下载限速(可选,防止带宽占满)
limit_rate 1024k; # 单连接限速1MB/s
# 允许跨域(如果前端需要)
add_header Access-Control-Allow-Origin *;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
# 日志记录
access_log /var/log/nginx/file_download.log;
}
# ========== 核心配置:文件上传(代理到简单后端) ==========
# 说明:Nginx原生不支持直接处理上传,需配合简单后端(如Python/Node.js)
location /upload/ {
# 代理到本地上传服务(示例:Python Flask服务,运行在5000端口)
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# 上传大小限制(关键)
client_max_body_size 100M; # 允许最大100MB的文件
client_body_buffer_size 10M; # 缓冲区大小
client_body_temp_path /data/file_server/temp; # 临时文件路径
# 超时配置
proxy_connect_timeout 60s;
proxy_read_timeout 300s; # 上传超时设为5分钟
}
# ========== 安全配置 ==========
# 禁止访问敏感文件
location ~* \.(php|jsp|sh|py|conf|bak)$ {
deny all;
}
# 禁止访问隐藏文件
location ~ /\. {
deny all;
}
# 限制上传文件类型(可选)
location ~* \.(exe|sh|bat|php)$ {
deny all;
}
}
三、通用操作技巧
- 配置检查 :
nginx -t(修改配置后必做,避免语法错误导致 Nginx 无法启动) - 重载配置 :
nginx -s reload(热重载,不中断服务) - 查看日志 :
- 访问日志:
/var/log/nginx/access.log - 错误日志:
/var/log/nginx/error.log
- 访问日志:
- 停止 / 启动 :
systemctl stop nginx/systemctl start nginx 使用配置在线生成工具:nginxWebUI - 文档