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%,超过了现…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...
