Nginx使用多个.conf文件配置虚拟主机server

2023-11-17

使用 Nginx 配置多个虚拟机 server 服务。通常做法可以直接在 nginx.conf 文件中添加即可,如下事例:

# nginx.conf

worker_processes  1;

events {
  worker_connections  1024;
}

http {
  include         mime.types;
  default_type    application/octet-stream;

  server {
    listen        80;
    server_name   localhost;
    location  / {
      root        html;
      index       index.html index.htm;
    }
  }

  server {
    listen        3000;
    server_name   www.example.com;
    location  / {
      root        /example/dist;
      index       index.html index.htm;
    }
  }
  ...
}

这样写其实没问题,只不过不易扩展,或者说 server 服务多了之后管理起来不是很方便,通常,我更愿意将一个 server 服务模块单独抽离出来进行管理,而在 nginx.conf 中呢只需要将各个独立配置的模块导入即可,既增加了其扩展性,同时每一个单独模块配置便与主配置文件分离,即使其内部配置出错了也不会影响到主配置文件,那么如何实现呢,请往下看

  • 第一步

conf 目录下创建一个 servers 目录用于管理所有的 server 模块

| -- conf
     | -- servers
  • 第二步

servers 目录下创建以 .conf 结尾的 server 配置文件,如

| -- conf
     | -- servers
          example.conf
  • 第三步

server 具体配置进行完善,这里只需要 server 块的内容即可,且注意每一行结尾以 ; 表示结束,不然会报错,事例如下

# servers/example.conf

server {
  listen        3000;             # 端口号
  server_name   www.example.com;  # 服务名 - 访问的域名
  location  / {
    root        /example/dist;
    index       index.html index.htm;
  }
}
  • 第四步

到这里,漫漫长征路已经接近尾声,该创建的文件目录都有了,该有的配置也完善了,最后就需要将所有的配置导入(包含)到 nginx.conf 中来,那么回到 nginx.conf 中找到 http 模块,并在内部添加如下内容

include servers/*.conf

其中的 ... 代表内容省略,这条配置的意思就是 包含servers目录下的所有以 .conf 结尾的文件,即此后所有在此目录下创建的 .conf 文件都会被导入(包含)到 nginx.conf 配置当中,若想创建多个 server 服务,重复【第三步】操作即可

# nginx.conf

...
http {
  ...
  include servers/*.conf
  ...
}
...

如此,nginx.conf 文件可简化为

# nginx.conf

worker_processes  1;

events {
  worker_connections  1024;
}

http {
  include         mime.types;
  default_type    application/octet-stream;
  include servers/*.conf

  server {
    listen        80;
    server_name   localhost;
    location  / {
      root        html;
      index       index.html index.htm;
    }
  }
  ...
}

=== OR ===

下面也可将 80 端口的 server 服务也单独拆分出来

# servers/local.conf

server {
  listen        80;
  server_name   localhost;
  location  / {
    root        html;
    index       index.html index.htm;
  }
}
# nginx.conf

worker_processes  1;

events {
  worker_connections  1024;
}

http {
  include         mime.types;
  default_type    application/octet-stream;
  include servers/*.conf

  ...
}

:: 重要

每次修改完配置之后都要记得 reload 一下,不然是不会生效的,执行以下命令,控制台不报错且没有任何内容输出即为成功,若有报错请按提示操作即可,一般情况问题主要出现在配置内容上,请仔细检查

nginx -s reload
:: 衍伸阅读

nginx documentation

:: 更多内容 ::

> 开发过程中踩坑经验记录

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx使用多个.conf文件配置虚拟主机server 的相关文章

随机推荐

  • 基于BCM53262交换芯片平台的Linux操作系统移植(一)编译环境

    2018 05 10 09 26 zhoulinhua 2018 05 10 一 源码 相关链接 http www at91 com linux4sam bin view Linux4SAM 1 a91bootstrap源码获取 git c
  • C++ 外观模式

    include
  • redhat 6.4安装oracle11g RAC (四)

    创建集群数据库 在节点rac1上用oracle用户执行dbca创建RAC数据库 root rac1 su oracle oracle rac1 dbca 选择创建数据库 自定义数据库 也可以是通用 配置类型选择Admin Managed 输
  • 微信小程序使用npm安装包

    小程序现在支持直接通过npm安装包了 点击这里了解更多 记录一下我自己的安装步骤及安装过程中遇到的一些问题 希望能够帮助到正在阅读此篇文章的你 我就直接通过在项目根目录安装miniprogram datepicker做演示了 1 在项目根目
  • SIMD优化之ARM纯汇编开发

    ARM纯汇编开发 注 这篇文章是两年前写的 现在更新到CSDN 当时认知不足 其中可能有不少错误 敬请行家指正 为什么要用纯汇编 开发效率高 这里可能让很多人大跌眼镜了 纯汇编开发效率高 首先 这个是有限定条件的 需要反复调优的重度运算场景
  • selenium读取excel中的数据实现自动登录

    一 当用selenium实现自动登录时 测试不同账号的登录 1 可以写一个登录方法login driver username password 对每一个账号分别写一个方法test zhnagshan log 然后将数据传入到登录方法logi
  • 【自动驾驶技术】优达学城无人驾驶工程师学习笔记(六)——Github与Markdown相关教程

    Github与Markdown相关教程 本博文为笔者关于优达学城无人驾驶工程师课程中计算机视觉基础部分的学习笔记 该部分为实现车道线图像识别功能的基础课程 关于本课程的详细说明请参考优达学城官网 优达学城为学员提供了一个简短的Github教
  • C++编程入门--矩阵类重载运算符

    题目 定义3 3矩阵类Matrix 在其中重载运算符 实现矩阵的基本运算 首先 我们先确定这个矩阵类的基本功能 我们来声明其成员函数的功能 列出来如下 include
  • SQLi LABS Less-21

    第21关使用POST请求提交参数 对用户名和密码中的特殊字符进行了转译 难度较大 21关的突破口在cookie 用户登录成功后 将用户名进行base64加密后 保存在cookie中 点击提交按钮的时候 会从cookie中获取保存的用户名 使
  • 矩阵 矩阵的基本运算规则 行列式 逆矩阵

    矩阵 本质 矩阵是个数表 从线性变换的视角看 矩阵是记录线性变换这一过程的描述信息 记为 A m n A m times n Am n 或 A a i j A a ij A aij 或 A a i j m n A a ij m times
  • RSA加密长度限制问题解决 BadPaddingException

    Exception in thread main javax crypto BadPaddingException Decryption error at sun security rsa RSAPadding unpadV15 RSAPa
  • python爬取数据存入excel_将爬取的数据保存到Excel表格

    第一步 导入模块 import xlwt 导入写入excel需要的包 第二步 定义函数 将爬取好的数据保存到excel文件中 下面以保存python的关键词为例 介绍详细流程 def write to excel filename lst
  • 蓝牙-基础篇-蓝牙简介

    文章目录 蓝牙特点 蓝牙功能 蓝牙的两种技术 蓝牙特点 低功耗 短距离 跨设备 蓝牙功能 跨设备传输流式音频 跨设备传输数据 广播信息 蓝牙的两种技术 传统蓝牙技术 蓝牙版本2 0 2 1 即Basic Rate Enhanced Data
  • 【小沐学C#】C#逆向反编译工具:JetBrains dotPeek

    论道篇 一天 戈戈来到江边静坐凝思 一手放着风筝 一手钓着鱼 微风徐徐 水面粼粼 柳枝招摇 戈戈 论语 读了许多天可有心得 狄狄 错误要么是 过了 要么是 不及 重要的就是把握住度 戈戈 程朱理学常说格物致知 那些红绿线平时可格出了些什么
  • C语言程序设计 程序设计与C语言

    1 计算机与程序 程序设计语言 机器语言又称低级语言 意思是贴近计算机硬件的语言 是一个型号机器语言的指令的集合 是紧密依赖于计算机的硬件 高级语言用于程序设计 编译系统的软件事先把高级语言编写的程序翻译成机器语言程序 2 C语言的出现和发
  • three.js 内置的几何体Geometry

    案例效果 所有案例效果地址 前言 前面我们了解了 一个three js三大基础renderer camera scene和响应式three js 现在我们来学习一下three js内置的geometry three js提供了很多的几何体给
  • 【PTA】二维数组转置

    写一个程序 使给定的一个二维数组 n n 转置 即行列互换 输入格式 输入n表示n行n列 再输入一个nxn的矩阵的整数 输出格式 转置的结果 输入样例 3 1 2 3 4 5 6 7 8 9 输出样例 1 4 7 2 5 8 3 6 9
  • 1007 素数对猜想

    让我们定义dn为 dn pn 1 pn 其中p是第i个素数 显然有d1 1 且对于n gt 1有dn 是偶数 素数对猜想 认为 存在无穷多对相邻且差为2的素数 现给定任意正整数N lt 10 5 请计算不超过N的满足猜想的素数对的个数 输入
  • 嵌入式的七种接口

    我们将简要介绍七个串行接口 SIO UART SSP SPI I2C CAN USB和EtherMAC 虽然每个接口都有几个不同的操作模式 但我们只介绍一个典型的模式 因此 本文的解释不适用于其它操作模式 摘自东芝 SIO 串行输入输出 最
  • Nginx使用多个.conf文件配置虚拟主机server

    使用 Nginx 配置多个虚拟机 server 服务 通常做法可以直接在 nginx conf 文件中添加即可 如下事例 nginx conf worker processes 1 events worker connections 102