当前位置: 首页 > news >正文

五十五、【Linux系统nginx服务】nginx安装、用户认证、https实现

一、Nginx 核心功能全景图

Nginx核心功能
静态内容服务
反向代理
负载均衡
安全防护
性能优化
高效文件传输
缓存控制
gzip压缩
隐藏后端
请求转发
WebSocket支持
轮询
权重分配
IP哈希
SSL/TLS
访问控制
防火墙
连接复用
缓存加速
HTTP/2

二、核心功能详解

静态内容服务优化矩阵

配置指令功能描述最佳实践性能影响
root网站根目录使用SSD存储
expires浏览器缓存静态资源设置长期缓存极高
gzip压缩传输对文本类型启用压缩
sendfile零拷贝传输启用sendfile on极高
tcp_nopushTCP优化与sendfile搭配使用
open_file_cache文件描述符缓存open_file_cache max=1000

负载均衡策略对比

策略类型配置指令工作原理适用场景缺点
轮询round-robin顺序分配请求默认均衡策略不考虑服务器负载
权重轮询weight=3按权重比例分配服务器性能不均静态配置
IP哈希ip_hash相同IP固定后端会话保持需求扩展性差
最少连接least_conn选择连接最少长连接服务计算开销大
响应时间fair (第三方)最快响应优先性能敏感服务需额外模块

Nginx 功能概述

Nginx 是高性能的 Web 服务器和反向代理服务器,主要功能包括:

  1. 静态内容服务:高效处理 HTML、CSS、JS 等静态文件
  2. 反向代理:将客户端请求转发到后端应用服务器
  3. 负载均衡:在多台服务器间分配请求流量
  4. SSL/TLS 终止:处理 HTTPS 加密连接
  5. 访问控制:基于 IP、用户认证等机制限制访问

功能作用详解

1. Nginx 核心功能

静态内容服务

server {root /var/www/html;  # 网站根目录index index.html;    # 默认首页
}
  • 支持高效静态文件处理
  • 支持 gzip 压缩减少传输量
  • 支持浏览器缓存控制

反向代理配置

location /app {proxy_pass http://backend_server;proxy_set_header Host $host;
}
  • 隐藏后端服务器信息
  • 支持负载均衡到多个后端
  • 支持 WebSocket 代理

2. 访问控制

基础认证

auth_basic "Restricted";
auth_basic_user_file /path/to/htpasswd;
  • 保护敏感目录
  • 支持多用户管理
  • 密码加密存储(bcrypt)

IP 访问控制

location /admin {allow 192.168.1.0/24;deny all;
}
  • 按网络范围限制访问
  • 支持动态 IP 黑白名单
  • 可与认证结合使用

3. HTTPS 安全配置

证书管理

ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
  • 支持 RSA/ECC 证书
  • 支持 OCSP Stapling
  • 支持证书链配置

安全增强

ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
  • 禁用不安全协议(SSLv3, TLSv1.0)
  • 启用前向保密(Perfect Forward Secrecy)
  • 启用 HSTS 强制 HTTPS

4. 性能优化

缓存配置

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m;
location / {proxy_cache my_cache;proxy_cache_valid 200 1h;
}
  • 减少后端服务器负载
  • 加速静态内容访问
  • 支持缓存清理接口

连接优化

keepalive_timeout 65;
keepalive_requests 100;
gzip on;
gzip_types text/plain application/json;
  • 减少 TCP 连接开销
  • 压缩传输内容
  • 支持 HTTP/2 协议

5. 日志与监控

分析需求awk命令功能描述输出示例
状态码统计awk '{print $9}'sortuniq -c
流量IP排名awk '{print $1}'sortuniq -c
请求URL统计`awk ‘{print $7}’sortuniq -c
响应时间分析awk 'NF > 1 {print 7, $NF}'sort -k2nr慢请求分析
流量时间分布awk '{print $4}'cut -d: -f1uniq -c

访问日志

log_format main '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent';
access_log /var/log/nginx/access.log main;
  • 自定义日志格式
  • 支持 JSON 格式日志
  • 实时流量监控

命令总结表格

演示命令功能描述关键参数
yum install nginx安装 Nginx
systemctl start nginx启动 Nginx 服务
nginx -t测试配置文件语法
nginx -s reload重载配置文件
htpasswd -c /path/to/file user创建密码文件-c 创建新文件
htpasswd /path/to/file user添加用户
openssl req -x509 -newkey rsa:2048生成自签名证书-x509 X.509证书格式
curl -u user:password URL带认证访问-u 用户名密码
curl -k https://URL忽略证书验证-k 不验证证书

一、Nginx 安装与基本配置

1. 安装 Nginx

# 添加EPEL仓库
[root@localhost ~]# yum install epel-release -y# 安装Nginx
[root@localhost ~]# yum install nginx -y# 启动并设置开机自启
[root@localhost ~]# systemctl start nginx
[root@localhost ~]# systemctl enable nginx
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service

2. 验证安装

# 检查服务状态
[root@localhost ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy serverLoaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)Active: active (running) since Mon 2025-07-21 15:30:05 CST; 5s ago# 测试访问
[root@localhost ~]# curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.20.1

3. 基本配置

# 创建测试站点目录
[root@localhost ~]# mkdir -p /var/www/site1
[root@localhost ~]# echo "Site 1 Home" > /var/www/site1/index.html# 创建站点配置文件
[root@localhost ~]# vi /etc/nginx/conf.d/site1.conf
server {listen 80;server_name site1.localhost;root /var/www/site1;index index.html;
}# 重载配置
[root@localhost ~]# nginx -t && systemctl reload nginx
nginx: configuration file /etc/nginx/nginx.conf test is successful

二、用户认证配置

1. 创建密码文件

# 安装密码工具
[root@localhost ~]# yum install httpd-tools -y# 创建认证用户
[root@localhost ~]# htpasswd -c /etc/nginx/auth_users admin
New password: 
Re-type new password: 
Adding password for user admin# 添加第二个用户
[root@localhost ~]# htpasswd /etc/nginx/auth_users user

2. 配置认证

# 编辑站点配置
[root@localhost ~]# vi /etc/nginx/conf.d/site1.conf
server {listen 80;server_name site1.localhost;root /var/www/site1;index index.html;location /private {auth_basic "Restricted Area";auth_basic_user_file /etc/nginx/auth_users;}
}# 重载配置
[root@localhost ~]# nginx -s reload

3. 测试访问

# 尝试访问受保护区域
[root@localhost ~]# curl http://site1.localhost/private
HTTP/1.1 401 Unauthorized
Server: nginx/1.20.1
WWW-Authenticate: Basic realm="Restricted Area"# 使用认证访问
[root@localhost ~]# curl -u admin:password http://site1.localhost/private
Site 1 Private Area

三、HTTPS 配置

1. 生成自签名证书

# 创建证书目录
[root@localhost ~]# mkdir /etc/nginx/ssl
[root@localhost ~]# cd /etc/nginx/ssl# 生成私钥和证书
[root@localhost ssl]# openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout site1.key -out site1.crt \
-subj "/C=CN/ST=Beijing/L=Beijing/O=Localhost/CN=site1.localhost"

2. 配置 HTTPS 站点

# 编辑配置文件
[root@localhost ~]# vi /etc/nginx/conf.d/site1.conf
server {listen 443 ssl;server_name site1.localhost;root /var/www/site1;index index.html;ssl_certificate /etc/nginx/ssl/site1.crt;ssl_certificate_key /etc/nginx/ssl/site1.key;ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;
}# HTTP重定向到HTTPS
server {listen 80;server_name site1.localhost;return 301 https://$host$request_uri;
}# 重载配置
[root@localhost ~]# nginx -s reload

3. 测试 HTTPS

# 跳过证书验证测试
[root@localhost ~]# curl -k https://site1.localhost
Site 1 Home# 查看证书详情
[root@localhost ~]# openssl s_client -connect site1.localhost:443 -showcerts

学习进阶路径

基础配置
安全加固
性能优化
高可用架构
动态模块
源码开发
http://www.dtcms.com/a/321339.html

相关文章:

  • 若以微服务部署踩坑点
  • Kiro :从“规范”到“实现”的全流程 AI 助手
  • PBootcms网站模板伪静态配置教程
  • 【新启航】旋转治具 VS 手动翻转:三维扫描中自动化定位如何将单件扫描成本压缩 75%
  • 深度学习圈常见的 TensorFlow、PyTorch、Transformer、transformers,到底有什么区别?
  • WEEX参与欧洲两场重要Web3线下活动,助力社区协作与技术交流
  • c++注意点(15)----设计模式(桥接模式与适配器模式)
  • 机器学习 SVM支持向量机
  • LintCode第433题-岛屿的个数
  • 【同余最短路】P2371 [国家集训队] 墨墨的等式|省选-
  • C5.2:如何利用BJT的区域进行稳定工作
  • 冠雅新品 | 以“无形之光”守护双眸,以“无声之智”浸润生活
  • 冷冻食材,鲜美生活的新选择
  • 深入理解OpenGL Shader与GLSL:基础知识与优势分析
  • 深度学习·Cascade-CLIP
  • Linux中的内核同步源码相关总结
  • 安科瑞EMS3.0:打造“零碳工厂”的智能能源神经中枢
  • 在 Mac 上安装 IntelliJ IDEA
  • 艾体宝产品 | 从“被看见”到“被信任”:GWI 协助洞察消费者,重构品牌认知
  • day21|学习前端vue3框架和ts语言
  • 二十八天(数据结构:图的补充)
  • 璞致电子 PZ-FH8052 高性能 FMC 子卡:超高速信号链的理想解决方案
  • Agent 开发进阶路线:从基础功能到自主决策
  • C++基础学习笔记
  • 如何在simulink中双击一个模块弹出一个exe?
  • SCI论文润色一站式服务
  • 机器学习模型在订单簿大单预测与应对
  • 线程池分析与设计
  • 【设计模式】访问者模式模式
  • Claude Code 实战场景解析:从代码生成到系统重构的典型应用案例