Nginx 虚拟主机 Server块配置详细解读

Nginx Server块配置详细解读

server { listen 80; # 监听端口 listen [::]:80 ipv6only=on; # IPv6 server_name example.com www.example.com; # 域名 # 根目录和索引 root /var/www/html; index index.html index.htm index.php; # 字符集 charset utf-8; # SSL配置(HTTPS) listen 443 ssl http2; ssl_certificate /etc/ssl/cert.pem; ssl_certificate_key /etc/ssl/key.pem; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; # 重定向HTTP到HTTPS if ($scheme != "https") { return 301 https://$host$request_uri; } # 安全头 add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; }

一、基础监听配置

1. 监听设置

listen 80; # 监听IPv4的80端口 listen [::]:80 ipv6only=on; # 监听IPv6的80端口

详细说明

  • listen 80:监听所有IPv4地址的80端口
  • [::]:IPv6的简写,表示所有IPv6地址
  • ipv6only=on:仅处理IPv6连接,避免IPv6 socket同时处理IPv4连接

等价写法

# 更明确的写法 listen 0.0.0.0:80; # 监听所有IPv4 listen [::]:80; # 监听所有IPv6

2. 域名绑定

server_name example.com www.example.com;

匹配规则

请求: http://example.com → 匹配 ✓ 请求: http://www.example.com → 匹配 ✓ 请求: http://blog.example.com → 不匹配 ✗ 请求: http://example.org → 不匹配 ✗

通配符用法

server_name *.example.com; # 匹配所有子域名 server_name .example.com; # 匹配example.com和所有子域名 server_name ~^(www\.)?example\.com$; # 正则匹配

二、文件服务配置

1. 根目录设置

root /var/www/html; index index.html index.htm index.php;

文件查找流程

请求: GET /about 查找: /var/www/html/about → 存在则返回 ↓ 不存在 查找: /var/www/html/about/index.html ↓ 不存在 查找: /var/www/html/about/index.htm ↓ 不存在 查找: /var/www/html/about/index.php

2. 字符集设置

charset utf-8; # 设置默认字符集为UTF-8

响应头效果

Content-Type: text/html; charset=utf-8

其他常用字符集

charset gb2312; # 简体中文 charset gbk; # 扩展中文 charset iso-8859-1; # 西欧语言

三、SSL/TLS配置

1. HTTPS监听

listen 443 ssl http2; # 监听443端口,启用SSL和HTTP/2

协议支持

  • ssl:启用SSL/TLS加密
  • http2:启用HTTP/2协议(需要Nginx 1.9.5+)

2. 证书配置

ssl_certificate /etc/ssl/cert.pem; # 公钥证书 ssl_certificate_key /etc/ssl/key.pem; # 私钥文件

证书格式说明

# PEM格式(常用)-----BEGIN CERTIFICATE----- 证书内容 -----END CERTIFICATE-----# 证书链配置ssl_certificate /path/to/fullchain.pem;# 包含中间证书

3. 安全协议

ssl_protocols TLSv1.2 TLSv1.3; # 只允许TLS 1.2和1.3

各版本对比

协议状态安全性
SSLv2❌ 已弃用严重漏洞
SSLv3❌ 已弃用POODLE攻击
TLSv1.0❌ 不推荐BEAST攻击
TLSv1.1⚠️ 过渡逐渐淘汰
TLSv1.2✅ 推荐目前主流
TLSv1.3✅ 最新最高安全

4. 加密套件

ssl_ciphers HIGH:!aNULL:!MD5;

加密套件解析

  • HIGH:高强度加密算法
  • !aNULL:禁用匿名DH算法
  • !MD5:禁用MD5哈希算法

推荐配置

ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256;

四、HTTP到HTTPS重定向

1. 重定向配置

if ($scheme != "https") { return 301 https://$host$request_uri; }

变量说明

  • $scheme:请求协议(http/https)
  • $host:请求的主机名
  • $request_uri:完整的请求URI

重定向示例

http://example.com/about → https://example.com/about http://www.example.com/ → https://www.example.com/ http://example.com:80 → https://example.com:443

2. 替代方案(推荐)

# 方案1:单独监听80端口并重定向 server { listen 80; listen [::]:80; server_name example.com www.example.com; return 301 https://$server_name$request_uri; } # 方案2:使用rewrite server { listen 80; server_name example.com; rewrite ^(.*) https://$server_name$1 permanent; }

五、安全响应头

1. X-Frame-Options

add_header X-Frame-Options "SAMEORIGIN";

作用:防止点击劫持攻击
取值

  • DENY:完全禁止iframe嵌入
  • SAMEORIGIN:只允许同域名嵌入
  • ALLOW-FROM uri:允许指定域名嵌入

2. X-Content-Type-Options

add_header X-Content-Type-Options "nosniff";

作用:阻止MIME类型嗅探攻击
效果:浏览器不会尝试猜测文件类型,严格按照Content-Type处理

3. X-XSS-Protection

add_header X-XSS-Protection "1; mode=block";

作用:启用XSS过滤器
取值

  • 0:禁用过滤器
  • 1:启用过滤器
  • 1; mode=block:启用并阻止页面加载

六、配置存在的问题与优化

问题1:SSL配置位置不当

# ❌ 错误:把SSL配置放在非SSL server块 server { listen 80; listen 443 ssl; # 混合配置,不清晰 # SSL配置... }

✅ 正确分离

# HTTP server(只重定向) server { listen 80; listen [::]:80; server_name example.com www.example.com; return 301 https://$server_name$request_uri; } # HTTPS server(完整配置) server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com www.example.com; # SSL配置... # 主站点配置... }

问题2:缺少重要安全头

# 建议补充的安全头 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; add_header Content-Security-Policy "default-src 'self'"; add_header Referrer-Policy "strict-origin-when-cross-origin"; add_header Permissions-Policy "geolocation=()";

问题3:SSL配置不完整

# 完整SSL优化配置 ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s;

七、完整优化配置示例

# HTTP重定向server server { listen 80; listen [::]:80; server_name example.com www.example.com; # 301永久重定向到HTTPS return 301 https://$server_name$request_uri; # 可选:记录重定向日志 access_log /var/log/nginx/redirect.log; } # HTTPS主server server { # 监听设置 listen 443 ssl http2; listen [::]:443 ssl http2; # 域名 server_name example.com www.example.com; # SSL证书 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # SSL安全配置 ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512; ssl_prefer_server_ciphers off; # SSL性能优化 ssl_session_cache shared:SSL:10m; ssl_session_timeout 24h; ssl_session_tickets off; # OCSP装订 ssl_stapling on; ssl_stapling_verify on; # 安全响应头 add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Content-Type-Options "nosniff" always; add_header X-XSS-Protection "1; mode=block" always; add_header Referrer-Policy "strict-origin-when-cross-origin" always; # 站点根目录 root /var/www/example.com; index index.html index.htm; # 字符编码 charset utf-8; # 日志 access_log /var/log/nginx/example.com.access.log; error_log /var/log/nginx/example.com.error.log; # 默认location location / { try_files $uri $uri/ =404; } # 静态文件缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 1y; add_header Cache-Control "public, immutable"; } }

八、配置流程图

客户端访问 ↓ [HTTP请求] → 80端口server → 301重定向到HTTPS ↓ [HTTPS请求] → 443端口server ↓ SSL握手 → 证书验证 → 协议协商 ↓ 添加安全响应头 ↓ 查找文件 → root目录 → index文件 ↓ 返回加密响应

九、调试技巧

1. 测试配置

# 检查配置语法sudonginx -t# 重新加载配置sudonginx -s reload# 查看监听端口sudonetstat-tlnp|grepnginx

2. SSL测试

# 测试SSL配置openssl s_client -connect example.com:443 -tls1_2# 检查证书链openssl s_client -showcerts -connect example.com:443# 在线测试curl-I https://example.com

3. 安全头测试

# 查看响应头curl-I https://example.com# 专门检查安全头curl-s -D - https://example.com -o /dev/null|grep-iE"(x-|hsts|content-security)"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1178604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS1 noetic 中将 Unitree G1 基于 Gazebo/RViz 关节联动【使用一个launch文件启动】

博客地址:https://www.cnblogs.com/zylyehuo/Unitree G1 模型文件下载地址(挑选自己需要的部分,本教程基于 g1_29dof.urdf (以及 .xml 和 meshes 文件夹))有核心的 URDF 文件和 Meshes (STL 网格文件)效果预览工作空…

写论文软件哪个好?实测揭秘!宏智树 AI 凭 “真研究” 实力出圈

毕业季的论文焦虑,几乎是每一位学子的必经之路:选题太泛被导师打回、文献堆砌逻辑混乱、数据分析无从下手、查重率居高不下、AI 生成痕迹被系统标红…… 面对五花八门的论文写作工具,“写论文软件哪个好” 成了无数学子的灵魂拷问。 作为深耕…

什么是 CMS 站群系统?以及它在百度 SEO 中的真实作用

在做网站矩阵、内容覆盖或 SEO 项目时,很多人都会听到一个词——CMS 站群系统。 但这个概念在实际使用中,经常被误解成“多个 CMS 拼在一起”,甚至被简单等同于泛目录工具,这种理解并不准确。本文从实际使用和搜索引擎角度&#x…

5 款 AI 写论文哪个好?实测宏智树 AI:毕业论文的全能型学术助手

毕业季的论文赛道上,“5 款 AI 写论文哪个好” 的灵魂拷问,总能在各大高校的互助群里刷屏。作为深耕论文写作科普的测评博主,我选取计算机、汉语言文学、临床医学等 5 个专业的毕业论文为样本,对宏智树 AI、万能小 in、DeepSeek、…

2026年周边优秀的汽车维修经销商怎么选择,客车轮胎/汽车保养/货车轮胎/轿车保养/汽车检测,汽车维修批发哪个好 - 品牌推荐师

行业洞察:汽车维修市场技术升级与服务质量双驱动趋势 随着汽车保有量持续攀升,消费者对维修服务的技术专业性、服务响应效率及售后保障提出更高要求。据中国汽车流通协会数据显示,2025年国内汽车后市场规模突破1.8万…

CMS站群系统在实际项目中解决的,往往不是“建站问题”

在很多讨论中,cms站群系统 常常被理解为“为了多建几个站”。 但在实际项目中,它真正解决的,往往并不是建站本身,而是后期无法规模化的问题。 这也是为什么,只有在项目做到一定阶段之后,才会真正意识到 cm…

变量的使用

变量的使用 public class Demo03Var{public static void main(string[] args){//byetbyet num1 = 100;System.out.println(num1);//shortbyet num2 = 1000;num2 = 1001;System.out.println(num2);//int 整数的默认类…

2026最新最全Java 面试题大全(整理版)2000+ 面试题附答案详解

很多 Java 工程师的技术不错,但是一面试就头疼,10 次面试 9 次都是被刷,过的那次还是去了家不知名的小公司。 问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。 应届生:你该如何准备简历&#…

2026年市场有名的包衣机定做厂家怎么选择,高效湿法制粒机/离心造粒包衣机/微孔高效包衣机,包衣机供货商口碑推荐 - 品牌推荐师

随着全球制药、保健品及食品工业对产品质量、生产效率和合规性要求的不断提升,高效、稳定、智能化的包衣设备已成为固体制剂生产线的核心装备之一。面对市场上琳琅满目的包衣机品牌与型号,采购方在选择定制化供应商时…

全网最全9个AI论文工具,专科生轻松搞定论文写作!

全网最全9个AI论文工具,专科生轻松搞定论文写作! AI 工具如何助力论文写作? 在当今学术环境中,AI 工具正逐渐成为学生和科研人员的重要助手。尤其是在论文写作过程中,AI 技术不仅能够有效降低 AIGC(人工智能…

租车新选择:2026年口碑爆棚的租车公司推荐,租赁/自驾租车/租车/会展包车/包车/企业租车/跨境包车,租车公司选哪家 - 品牌推荐师

评测背景 随着出行需求多元化及消费升级,租车行业已成为连接个人出行、商务活动与旅游服务的重要枢纽。2026年,消费者对租车服务的核心诉求已从“基础用车”转向“品质、安全、效率与个性化”的综合体验。为此,第三…

web入门91-100

web91 分析代码使用换行符(%0a)绕过 ?cmd=abc%0aphpweb92 分析代码需要传入一个不等于4476的数字,但是取整又要等于4476,所以直接传一个小数4476.1web93 分析代码发现只是多禁了一些字母,继续用上一关的payloadweb…

Splay/LCT

Splay 与 lctSplay Splay 我们考虑在一颗 BST,用旋转操作将某个元素先提到根,使其仍是一颗 BST,这样的操作就是 \(s(x,0)\)。 void splay(int x,int target){while(fa[x]!=target){int f=fa[x],gf=fa[f];if(gf==tar…

基于可视分析技术的深度学习模型构建与优化【附源码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 成品或定制,查看文章底部微信二维码 (1)多层级可视化的深度学习模型构建体系 面对深度学习…

移除链表元素-day03

203. 移除链表元素 题目链接:https://leetcode.cn/problems/remove-linked-list-elements/description/ 思路:在原来的链表中新增一个节点,这个节点作为头结点(好处,不用单独处理原链表的头结点) 代码: public …

Java Web 核心全解析 - 实践

Java Web 核心全解析 - 实践2026-01-18 15:27 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important;…

制图不用愁!CAXA 电子图板 2025 最新版本国标图库一键调用

CAXA 电子图板 2025 是国产自主的二维 CAD 软件,贴合国标、高效易用、兼容性强,主打机械制图,是替代海外 CAD 的高性价比选择。核心亮点:自主双内核:支持 EXB 原生格式和 DWG 格式双向转换,数据互通无壁垒,版权…

基于深度学习的信道编码识别与扰码分析【附完整代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅ 成品或定制,查看文章底部微信二维码(1)基于Inception结构的信道编码盲识别模型 在非合作通信…

2026年知名的石墨烯涂料设计推荐排行,光固化保护套/石墨烯涂料/无溶剂环氧涂料,石墨烯涂料源头厂家推荐排行榜 - 品牌推荐师

近年来,随着工业防腐需求升级与环保政策趋严,石墨烯涂料凭借其优异的导电性、耐腐蚀性及环保特性,成为防腐材料领域的“新宠”。据行业数据预测,2026年国内石墨烯涂料市场规模将突破百亿元,应用场景从传统管道、桥…

基于多特征融合的深度学习高速铁路预售期购票量预测

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。✅ 专业定制毕设、代码✅ 成品或定制,查看文章底部微信二维码(1)高铁客流数据的时空特征解析与工程化处理 高铁旅客购票…