nginx常见功能部署

目录

一、环境准备

二、常见功能部署

1.静态资源服务(最基础功能)

2.反向代理(前后端分离必备)

3.负载均衡(多后端服务分流)

[4.HTTPS 配置(SSL 证书部署)](#4.HTTPS 配置(SSL 证书部署))

5.上传下载配置

三、通用操作技巧


一、环境准备

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 - 文档
相关推荐
小天源4 小时前
linux漏洞一键扫描
linux·运维·服务器·漏洞扫描
eWidget4 小时前
InfluxDB迁移至金仓数据库的同城容灾实践:性能显著提升、运维效率优化,某能源企业实现RPO_5秒的高可靠时序数据管理
运维·数据库·能源·时序数据库·kingbase·kingbasees·金仓数据库
m0_696212684 小时前
个人微信api
运维·服务器
en-route4 小时前
SSH Key 与 GPG Key 区别详解:Git 使用中的身份与签名机制
运维·git·ssh
Web极客码5 小时前
区块链第 1 层与第 2 层有什么区别?
服务器·区块链
小白鸽i7 小时前
【LINUX】将源码驱动文件编译并生效
linux·运维·服务器
做萤石二次开发的哈哈7 小时前
萤石开放平台 音视频 | 产品概述
运维·服务器·萤石云·萤石·萤石开放平台
0思必得07 小时前
[Web自动化] 处理爬虫异常
运维·爬虫·python·selenium·自动化·web自动化
China_Yanhy8 小时前
我的区块链运维日记 · 第 4 日:死掉的“活”节点 —— 攻克“同步滞后(Lag)”
运维·区块链