Nginx三种不同类型的虚拟主机(基于域名、IP 和端口)

🏡作者主页:点击!
Nginx-从零开始的服务器之旅专栏:点击!
🐧Linux高级管理防护和群集专栏:点击!
⏰️创作时间:2025年1月15日13点14分

目录
1. 基于域名的虚拟主机
步骤 1:准备网站根目录
步骤 2:修改 Nginx 配置文件
步骤 3:测试配置并重启 Nginx
步骤 4:访问测试
客户端测试
2. 基于 IP 的虚拟主机
步骤 1:准备网站根目录
步骤 2:修改 Nginx 配置文件
步骤 3:测试配置并重启 Nginx
步骤 4:访问测试
客户端测试
3. 基于端口的虚拟主机
步骤 1:准备网站根目录
步骤 2:修改 Nginx 配置文件
步骤 3:测试配置并重启 Nginx
步骤 4:访问测试
客户端测试
4.总结
Nginx 是一款高性能的 Web 服务器,支持多种虚拟主机配置方式,能够根据域名、IP 或端口区分不同的站点。这种灵活性让 Nginx 成为搭建多站点服务的首选工具。本文将带你一步步实现三种常见的虚拟主机配置方法:基于域名、基于 IP 和基于端口的虚拟主机。无论你是初学者还是有经验的运维人员,这篇教程都能帮助你快速掌握虚拟主机的配置技巧。
以下案例演示 是基于源码包安装的nignx (如果你是rpm包 也差不多 只用把路径改为你nginx的路径即可 其他没什么大的变化,如果你是小白请绕道!)
1. 基于域名的虚拟主机
步骤 1:准备网站根目录
为每个域名创建独立的子目录,并添加测试页面:
[root@localhost ~]# mkdir -p /usr/local/nginx/html/site1
[root@localhost ~]# mkdir -p /usr/local/nginx/html/site2[root@localhost ~]# echo "Welcome to Site 1" > /usr/local/nginx/html/site1/index.html
[root@localhost ~]# echo "Welcome to Site 2" > /usr/local/nginx/html/site2/index.html
步骤 2:修改 Nginx 配置文件
打开 Nginx 的配置文件:
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
在 http 配置段中添加以下内容:
注释:如果需要两个虚拟主机 只用将再额外添加一个server即可

# 全局配置
user nobody;
worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;# 基于域名的虚拟主机配置server {listen 80;server_name www.site1.com;# 网站根目录root html/site1;index index.html index.htm;# 日志配置access_log logs/site1_access.log;error_log logs/site1_error.log;# 主路径配置location / {try_files $uri $uri/ =404;}# 状态监控location /status {stub_status on;access_log off;allow 192.168.14.112;deny all;}# 错误页面配置error_page 404 /404.html;error_page 500 502 503 504 /50x.html;location = /404.html {root html/site1;}location = /50x.html {root html;}# 禁止访问 .ht 文件location ~ /\.ht {deny all;}}server {listen 80;server_name www.site2.com;# 网站根目录root html/site2;index index.html index.htm;# 日志配置access_log logs/site2_access.log;error_log logs/site2_error.log;# 主路径配置location / {try_files $uri $uri/ =404;}# 错误页面配置error_page 404 /404.html;error_page 500 502 503 504 /50x.html;location = /404.html {root html/site2;}location = /50x.html {root html;}# 禁止访问 .ht 文件location ~ /\.ht {deny all;}}
}
步骤 3:测试配置并重启 Nginx
测试配置文件语法:
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
重启 Nginx 服务:
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
步骤 4:访问测试
在浏览器中访问:
http://www.site1.com,应显示Welcome to Site 1。http://www.site2.com,应显示Welcome to Site 2。
客户端测试
修改hosts文件(本地dns解析)
[root@localhost ~]# vim /etc/hosts


2. 基于 IP 的虚拟主机
步骤 1:准备网站根目录
为每个 IP 创建独立的子目录,并添加测试页面:
[root@localhost ~]# mkdir -p /usr/local/nginx/html/ip1
[root@localhost ~]# mkdir -p /usr/local/nginx/html/ip2[root@localhost ~]# echo "Welcome to IP 192.168.14.111" > /usr/local/nginx/html/ip1/index.html
[root@localhost ~]# echo "Welcome to IP 192.168.14.112" > /usr/local/nginx/html/ip2/index.html
步骤 2:修改 Nginx 配置文件
打开 Nginx 的配置文件:
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
在 http 配置段中添加以下内容:

server {listen 192.168.14.111:80;server_name 192.168.14.111;root html/ip1; # 使用默认路径的子目录index index.html;location / {try_files $uri $uri/ =404;}# 错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root html; # 默认错误页面路径}
}server {listen 192.168.14.112:80;server_name 192.168.14.112;root html/ip2; # 使用默认路径的子目录index index.html;location / {try_files $uri $uri/ =404;}# 错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root html; # 默认错误页面路径}
}
步骤 3:测试配置并重启 Nginx
测试配置文件语法:
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
重启 Nginx 服务:
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
步骤 4:访问测试
在浏览器中访问:
http://192.168.14.111,应显示Welcome to IP 192.168.14.111。http://192.168.14.112,应显示Welcome to IP 192.168.14.112。
客户端测试
因为我在虚拟机测试 只有一个网卡 所以我在虚拟一个网卡 这个你可以忽视 看测试结果即可
ip addr add 192.168.14.110/24 dev ens33

3. 基于端口的虚拟主机
步骤 1:准备网站根目录
为每个端口创建独立的子目录,并添加测试页面:
[root@localhost ~]# mkdir -p /usr/local/nginx/html/port1
[root@localhost ~]# mkdir -p /usr/local/nginx/html/port2[root@localhost ~]# echo "Welcome to Port 8080" > /usr/local/nginx/html/port1/index.html
[root@localhost ~]# echo "Welcome to Port 9090" > /usr/local/nginx/html/port2/index.html
步骤 2:修改 Nginx 配置文件
打开 Nginx 的配置文件:
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
在 http 配置段中添加以下内容:

server {listen 8080;server_name localhost;root html/port1; # 使用默认路径的子目录index index.html;location / {try_files $uri $uri/ =404;}# 错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root html; # 默认错误页面路径}
}server {listen 9090;server_name localhost;root html/port2; # 使用默认路径的子目录index index.html;location / {try_files $uri $uri/ =404;}# 错误页面error_page 500 502 503 504 /50x.html;location = /50x.html {root html; # 默认错误页面路径}
}
步骤 3:测试配置并重启 Nginx
测试配置文件语法:
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
重启 Nginx 服务:
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload
步骤 4:访问测试
在浏览器中访问:
http://192.168.14.111:8080,应显示Welcome to Port 8080。http://192.168.14.111:9090,应显示Welcome to Port 9090。
客户端测试

4.总结
通过本文的详细步骤,我们成功实现了基于域名、IP 和端口的虚拟主机配置。Nginx 的灵活性和高性能使其能够轻松应对多站点服务的需求。这些配置方法不仅适用于日常开发和测试环境,也能在生产环境中提供稳定可靠的服务。如果你对 Nginx 的配置还有疑问或其他需求,欢迎留言交流,让我们共同学习、共同进步!
成功的路上没有捷径,只有不断的努力与坚持。如果你和我一样,坚信努力会带来回报,请关注我,点个赞,一起迎接更加美好的明天!你的支持是我继续前行的动力!"
"每一次创作都是一次学习的过程,文章中若有不足之处,还请大家多多包容。你的关注和点赞是对我最大的支持,也欢迎大家提出宝贵的意见和建议,让我不断进步。"
神秘泣男子

相关文章:
Nginx三种不同类型的虚拟主机(基于域名、IP 和端口)
🏡作者主页:点击! Nginx-从零开始的服务器之旅专栏:点击! 🐧Linux高级管理防护和群集专栏:点击! ⏰️创作时间:2025年1月15日13点14分 目录 1. 基于域名的虚拟主机 …...
Shell控监Kafka积压
1、获取Kafka消息堆积情况 vi check-kafka-lag.sh #!/bin/bashTOPIC"total_random" GROUP_ID"etl-dw" BOOTSTRAP_SERVER"node-01:9092,node-02:9092,node-03:9092"# 检查第一个参数是否为数字 if ! [[ $1 ~ ^[0-9]$ ]]; thenecho &…...
element-ui textarea备注 textarea 多行输入框
发现用这个组件,为了给用户更好的体验,要加下属性 1. 通过设置 autosize 属性可以使得文本域的高度能够根据文本内容自动进行调整,并且 autosize 还可以设定为一个对象,指定最小行数和最大行数。:autosize"{ minRows: 3, ma…...
Transformer创新模型!Transformer+BO-SVR多变量回归预测,添加气泡图、散点密度图(Matlab)
Transformer创新模型!TransformerBO-SVR多变量回归预测,添加气泡图、散点密度图(Matlab) 目录 Transformer创新模型!TransformerBO-SVR多变量回归预测,添加气泡图、散点密度图(Matlab࿰…...
大疆机场及无人机上云
最近基于大疆上云api进行二次开发,后面将按照开发步骤对其进行说明!...
用Cursor生成一个企业官网前端页面(生成腾讯、阿里官网静态页面)
用Cursor生成一个企业官网前端页面 第一版: <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…...
Java 数组排序
目录 1.Java冒泡排序(Bubble Sort) 1.冒泡排序 2.冒泡排序的算法原理 3.冒泡排序的复杂度和性能 4.形成代码 2.Java快速排序(Quick Sort) 3.Java归并排序(Merge Sort) 4.Java选择排序(S…...
LeetCode:78.子集
跟着carl学算法,本系列博客仅做个人记录,建议大家都去看carl本人的博客,写的真的很好的! 代码随想录 LeetCode:78.子集 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集…...
【经济学通识——国债】
国债 政府的支出一般大于收入,会有赤字 于是会向全社会去借钱。美国债务上限,象征性的(一直上调)全球政府债务都在上升。 亚当斯密觉得市场竞争最有效率 市场自由竞争会不可避免的出现萧条。于是,凯恩斯提出政府调节…...
联合体(Union)
联合体(Union)简介 联合体(union)是 C 和 C 编程语言中的一种数据结构,和结构体(struct)类似,但有一些重要的区别。 定义 联合体中的所有成员共享同一段内存,也就是说…...
Kibana:ES|QL 编辑器简介
作者:来自 Elastic drewdaemon ES|QL 很重要 💪 正如你可能已经听说的那样,ES|QL 是 Elastic 的新查询语言。我们对 ES|QL 寄予厚望。它已经很出色了,但随着时间的推移,它将成为与 Elasticsearch 中的数据交互的最强大…...
【工具】curl工具
curl 官网: https://curl.se/ github: https://github.com/curl?languagec curl 命令 所有参数介绍在线文档 简单使用教程 邮件发送命令 注: 支持SMTP(或者POP3)协议,curl的版本必须高于7.20(含&…...
idea中远程调试中配置的参数说明
Ⅰ 远程调试中配置的端口号与服务本身端口号区别 一、远程调试中配置端口号的作用 在 IDEA 中进行远程调试时配置的端口号主要用于建立开发工具(如 IDEA)和远程服务之间的调试连接。当你启动远程调试时,IDEA 会监听这个配置的端口号…...
JavaWeb 前端基础 html + CSS 快速入门 | 018
今日推荐语 指望别人的救赎,势必走向毁灭——波伏娃 日期 学习内容 打卡编号2025年01月17日JavaWeb 前端基础 html CSS018 前言 哈喽,我是菜鸟阿康。 今天 正式进入JavaWeb 的学习,简单学习 html CSS 这2各前端基础部分&am…...
Debian 设定 tomcat 定时重启
目录 背景 过程记录 1、编辑sh文件,完成重启功能 2、设置sh的可执行权限 编辑 3、设置定时任务 背景 在Debian 12系统中,原本部署了两个tomcat,结果总是遇到CPU飙升到影响应用正常使用的程度,找了很久原因还是没有找到。 …...
【QT】: 初识 QWidget 控件 | QWidget 核心属性(API) | qrc 文件
🔥 目录 1. 控件概述 控件体系的发展阶段 2. QWidget 核心属性 2.1 核心属性概览2.2 用件可用(Enabled) 2.3 坐标系(Geometry) **实例 1: 控制按钮的位置**实例 2: 表白 程序 2.4 窗口标题(windowTiltle&a…...
下载文件,浏览器阻止不安全下载
背景: 在项目开发中,遇到需要下载文件的情况,文件类型可能是图片、excell表、pdf、zip等文件类型,但浏览器会阻止不安全的下载链接。 效果展示: 下载文件的两种方式: 一、根据接口的相对url,拼…...
基于javaweb的SpringBoot景区旅游管理系统设计和实现(源码+文档+部署讲解)
个人名片 🔥 源码获取 | 毕设定制| 商务合作:《个人名片》 ⛺️心若有所向往,何惧道阻且长 文章目录 个人名片运行环境技术栈适用功能说明使用说明 运行环境 Java≥8、MySQL≥5.7 1.运行环境:最好是java jdk 1.8,我们在这个平台…...
【17】Word:林楚楠-供应链❗
目录 题目 NO1.2 NO3 NO4 NO5 NO6 NO7 NO89 题目 NO1.2 另存为:文件→另存为→文档→文件名/考生文件夹F12/FnF12→文件名/考生文件夹 插入→分节符→文本框→输入文件→排版_居中对齐→间距/回车去掉文本框的边框→选中文本框→格式:形状轮廓…...
Transformer中基于惊喜的遗忘机制
在语言建模任务上,拥有 760M 参数的 Titans(MAC) 在 WikiText 上达到了 19.93 的困惑度,显著优于同等规模的 Transformer++(25.21) 和 Mamba2(22.94)。在常识推理任务上,Titans 在包括 PIQA、HellaSwag、WinoGrande 等 9 个基准测试中的平均准确率达到 52.51%,超过了现…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
Device Mapper 机制
Device Mapper 机制详解 Device Mapper(简称 DM)是 Linux 内核中的一套通用块设备映射框架,为 LVM、加密磁盘、RAID 等提供底层支持。本文将详细介绍 Device Mapper 的原理、实现、内核配置、常用工具、操作测试流程,并配以详细的…...
华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
