Nginx 配置指令之 server

06-01 1197阅读

Nginx 配置指令之 server_name 超详细参数解析与应用场景

在Nginx的配置中,server_name 是一个非常重要的指令,用于指定域名与服务器之间的映射关系。它决定了哪些请求会被当前虚拟主机(Server Block)处理。理解 server_name 指令的功能与配置方式,对于正确配置Nginx的虚拟主机,提升网站的稳定性和性能非常关键。本文将对 server_name 的用法、参数解析以及实际应用场景进行详细讲解,帮助开发者更好地使用这一指令。

Nginx 配置指令之 server

文章目录

  • Nginx 配置指令之 `server_name` 超详细参数解析与应用场景
  • 作者简介
    • 猫头虎是谁?
    • 作者名片 ✍️
    • 加入我们AI共创团队 🌐
    • 加入猫头虎的AI共创变现圈,一起探索编程世界的无限可能! 🚀
    • 正文
      • 一、什么是 `server_name`?
        • 基本语法:
        • 二、`server_name` 配置参数详解
          • 1. 完全匹配
          • 2. 支持多个域名
          • 3. 通配符匹配
          • 4. 正则表达式匹配
          • 5. 默认虚拟主机配置
          • 三、`server_name` 的应用场景
            • 1. 配置多个域名和子域名
            • 2. 配置基于域名的虚拟主机
            • 3. 使用正则表达式动态匹配域名
            • 4. 配置默认虚拟主机
            • 四、总结
            • 文末粉丝专属福利
            • 联系我与版权声明 📩

              作者简介

              猫头虎是谁?

              大家好,我是 猫头虎,AI全栈工程师,某科技公司CEO,猫头虎技术团队创始人,也被大家称为虎哥。我目前是COC北京城市开发者社区主理人、COC西安城市开发者社区主理人,以及云原生开发者社区主理人,在多个技术领域如云原生、前端、后端、运维和AI都有超多内容更新。

              感谢全网三十多万粉丝的持续支持,我希望通过我的分享,帮助大家更好地掌握和使用各种技术产品,提升开发效率与体验。


              作者名片 ✍️

              • 博主:猫头虎
              • 全网全平台搜索关键词 猫头虎 即可与我建联
              • 作者微信号:Libin9iOak
              • 作者公众号:猫头虎技术团队
              • 更新日期:2025年04月22日
              • 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能!

                加入我们AI共创团队 🌐

                • 猫头虎AI共创社群矩阵列表:
                  • 点我进入AI共创变现社群入口专区:

                    https://bbs.csdn.net/topics/617720781

                  • 点我进入CSDNWF万粉博主变现入口专区:

                    https://bbs.csdn.net/topics/617717169

                    加入猫头虎的AI共创变现圈,一起探索编程世界的无限可能! 🚀


                    正文

                    一、什么是 server_name?

                    在 Nginx 配置文件中,server_name 用于定义与当前虚拟主机相匹配的域名或 IP 地址。Nginx 会根据请求中的 Host 头部来匹配到对应的 server_name,从而决定请求应该交由哪个虚拟主机(Server Block)处理。

                    server_name 通常在虚拟主机的配置段(server block)中进行配置。一个 Nginx 配置文件可以包含多个虚拟主机配置,每个虚拟主机可以有自己的 server_name,并根据请求的域名不同分发到不同的应用。

                    基本语法:

                    server {
                        listen 80;
                        server_name example.com www.example.com;
                        root /var/www/example;
                        # 更多配置...
                    }
                    

                    在上面的示例中,server_name 配置了 example.com 和 www.example.com,表示所有访问这两个域名的请求都会被该虚拟主机配置处理。

                    二、server_name 配置参数详解

                    1. 完全匹配

                    最常见的配置方式是指定完全匹配的域名。例如:

                    server {
                        listen 80;
                        server_name example.com;
                        root /var/www/example;
                        # 更多配置...
                    }
                    

                    在此配置下,所有访问 example.com 的请求都会由该虚拟主机处理。

                    2. 支持多个域名

                    server_name 允许通过空格分隔多个域名。这样可以让一个虚拟主机处理多个域名的请求。例如:

                    server {
                        listen 80;
                        server_name example.com www.example.com api.example.com;
                        root /var/www/example;
                        # 更多配置...
                    }
                    

                    在该配置中,server_name 同时匹配 example.com、www.example.com 和 api.example.com,所有访问这三个域名的请求都会由同一个虚拟主机处理。

                    3. 通配符匹配

                    Nginx 支持通配符匹配域名。通配符可以用来匹配多个域名或子域名。

                    • 星号(*)作为前缀匹配:星号用来匹配子域名的任意部分。

                      server {
                          listen 80;
                          server_name *.example.com;
                          root /var/www/example;
                          # 更多配置...
                      }
                      

                      这个配置表示匹配所有 example.com 域下的子域名(如 api.example.com、www.example.com),但不包括 example.com 本身。

                    • 星号(*)作为后缀匹配:如果星号出现在域名后,表示匹配所有以该字符串开头的域名。

                      server {
                          listen 80;
                          server_name example.*;
                          root /var/www/example;
                          # 更多配置...
                      }
                      

                      这个配置会匹配所有以 example. 为前缀的域名,例如 example.com、example.net、example.org 等。

                      4. 正则表达式匹配

                      Nginx 支持使用正则表达式来匹配 server_name。通过在域名模式前加上波浪线(~)来启用正则表达式匹配。例如:

                      server {
                          listen 80;
                          server_name ~^www\.(.+)\.com$;
                          root /var/www/example;
                          # 更多配置...
                      }
                      

                      在此配置中,server_name 使用正则表达式匹配所有以 www. 开头并以 .com 结尾的域名(例如 www.example.com、www.test.com)。此时,正则表达式的捕获组将包含域名的核心部分(example 或 test),这些信息可以用于进一步的配置或重定向。

                      5. 默认虚拟主机配置

                      当 Nginx 无法根据请求的 Host 头部找到匹配的 server_name 时,会使用默认的虚拟主机配置。如果有多个虚拟主机配置匹配同一个请求,Nginx 会选择 server_name 最先匹配的配置。

                      server {
                          listen 80 default_server;
                          server_name _;
                          root /var/www/default;
                          # 更多配置...
                      }
                      

                      在该配置中,server_name _ 表示一个默认的虚拟主机,这种配置通常用于处理所有未匹配的请求。default_server 关键字使得该虚拟主机成为默认虚拟主机。

                      三、server_name 的应用场景

                      1. 配置多个域名和子域名

                      在实际开发中,很多网站不仅仅使用一个域名,通常会有多个子域名。使用 server_name 可以轻松配置多个域名或子域名指向同一个虚拟主机配置。

                      例如,你可以将 www.example.com 和 api.example.com 都指向同一个网站,方便管理:

                      server {
                          listen 80;
                          server_name www.example.com api.example.com;
                          root /var/www/example;
                          # 更多配置...
                      }
                      

                      2. 配置基于域名的虚拟主机

                      通过使用不同的 server_name,你可以配置多个虚拟主机,并根据域名来分发请求。例如,配置 www.example.com 和 blog.example.com 两个虚拟主机:

                      server {
                          listen 80;
                          server_name www.example.com;
                          root /var/www/www;
                          # 更多配置...
                      }
                      server {
                          listen 80;
                          server_name blog.example.com;
                          root /var/www/blog;
                          # 更多配置...
                      }
                      

                      这样,访问 www.example.com 的请求将由第一个虚拟主机处理,访问 blog.example.com 的请求将由第二个虚拟主机处理。

                      3. 使用正则表达式动态匹配域名

                      在一些复杂的应用中,可能需要根据域名的特征动态地匹配请求。通过正则表达式的方式,可以更灵活地配置 server_name,比如根据子域名的不同部分进行处理。

                      例如,配置一个虚拟主机处理以 www. 开头的所有域名:

                      server {
                          listen 80;
                          server_name ~^www\.(.+)\.com$;
                          root /var/www/$1;
                          # 更多配置...
                      }
                      

                      在该配置中,$1 是正则表达式捕获组的内容,表示匹配的域名部分(如 example),通过这种方式可以动态地为不同的子域名提供服务。

                      4. 配置默认虚拟主机

                      在某些情况下,可能需要配置一个默认的虚拟主机来处理所有未匹配的请求。比如,在配置多个虚拟主机时,可以使用一个默认虚拟主机来处理没有明确指定域名的请求:

                      server {
                          listen 80 default_server;
                          server_name _;
                          root /var/www/default;
                          # 更多配置...
                      }
                      

                      此时,所有没有匹配到 server_name 的请求将被该默认虚拟主机处理。

                      四、总结

                      server_name 是 Nginx 配置中不可或缺的指令之一。理解它的用法可以帮助我们更灵活地配置虚拟主机、管理多个域名、提高站点的可维护性与扩展性。通过本文的解析,你可以掌握 server_name 的多种配置方式,包括精确匹配、通配符匹配、正则表达式匹配等,帮助你在实际生产环境中灵活配置Nginx,提升网站的性能和稳定性。

                      文末粉丝专属福利


                      👉 更多信息:有任何疑问或者需要进一步探讨的内容,欢迎点击文末名片获取更多信息。我是猫头虎,期待与您的交流! 🦉💬

                      ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥88/月¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

                      粉丝福利 GO ! GO ! Go !
                      cursor随便用!
                      GPT4.5和GPT4.1 粉丝特享 88园子/🈷️
                      

                      万粉变现入口:https://gitcode.com/qq_44866828/CSDNWF

                      AI编程工具特惠入口:https://yeka.ai/i/CHATVIP

                      GPT4.5/GPT4.1 粉丝特享 88园子/🈷️


                      ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥88/月¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥

                      联系我与版权声明 📩

                      • 联系方式:
                        • 猫头虎微信号: Libin9iOak
                        • 万粉变现经纪人微信号:CSDNWF
                        • 公众号: 猫头虎技术团队
                        • 版权声明:

                          本文为原创文章,版权归作者所有。未经许可,禁止转载。更多内容请访问猫头虎的博客首页。


                          点击✨⬇️下方名片⬇️✨,加入猫头虎AI共创社群,交流AI新时代变现的无限可能。一起探索科技的未来,共同成长。🚀

                          🔗 猫头虎抱团AI共创社群 | 🔗 100天精通八种AI编程语言基础教程 | 🔗 GitHub 代码仓库 | 🔗 Java进阶之路:必知必会的核心知识点与版本对比🔗 ✨ 猫头虎精品博客
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码