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%,超过了现…...

从玩具到工业控制--51单片机的跨界传奇【3】
在科技的浩瀚宇宙中,51 单片机就像一颗独特的星辰,散发着神秘而迷人的光芒。对于无数电子爱好者而言,点亮 51 单片机上的第一颗 LED 灯,不仅仅是一次简单的操作,更像是开启了一扇通往新世界的大门。这小小的 LED 灯&am…...

基于机器学习的用户健康风险分类及预测分析
完整源码项目包获取→点击文章末尾名片! 背景描述 在这个日益注重健康与体能的时代,健身已成为许多人追求健康生活的重要组成部分。 本数据集包含若干健身房会员的详细信息,包括年龄、性别、体重、身高、心率、锻炼类型、身体脂肪比例等多项关…...

CF 641A.Little Artem and Grasshopper(Java实现)
题目分析 蚂蚱会在n个房间中根据既定房间规则向固定方向跳跃固定长度,试问是否能够跳出这个长度(即落点位置在0或n1) 思路分析 输入n就有n个房间,n套规则(固定方向和跳跃距离),蚂蚱到哪个房间就…...

5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署
想象一下,只需简单几步操作,就能生成逼真的语音效果,无论是为客户服务还是为游戏角色配音,都能轻松实现。GPT-Sovits 模型,其高效的语音生成能力为实现自然、流畅的语音交互提供了强有力的技术支持。本文将详细介绍如何…...

1.Spring AI 从入门到实践
Spring AI 从入门到实践 1.什么是Spring AI 2.使用Spring Boot&Spring AI快速构建AI应用程序 3.ChatClient&Chat Model简化与AI模型的交互 4.Spring AI Prompt:与大模型进行有效沟通 5.结构化输出大模型响应 6.实战:AI聊天机器人 Ben技术站关注Java技术&#x…...

第23篇 基于ARM A9处理器用汇编语言实现中断<五>
Q:怎样修改HPS Timer 0定时器产生的中断周期? A:在上一期实验的基础上,可以修改按键中断服务程序,实现红色LED上的计数值递增的速率,主程序和其余代码文件不用修改。 实现以下功能:按下KEY0…...

攻防世界 unseping
开启场景 整体来说是创建了一个case类,然后可接受post传来的ctf的值,并对其进行base64解码以及反序列化。所以我们能控制ctf变量。 先看__wakeup方法,该方法使用waf方法对$arg中的内容进行了防护,过滤掉了| & ; 空格 / cat f…...

Python编程与在线医疗平台数据挖掘与数据应用交互性研究
一、引言 1.1 研究背景与意义 在互联网技术飞速发展的当下,在线医疗平台如雨后春笋般涌现,为人们的就医方式带来了重大变革。这些平台打破了传统医疗服务在时间和空间上的限制,使患者能够更加便捷地获取医疗资源。据相关报告显示,中国基于互联网的医疗保健行业已进入新的…...

浔川 AI 翻译已修复,可正常使用
浔川 AI 翻译已修复,可正常使用 亲爱的用户们: 大家好!经过技术团队的不懈努力,浔川 AI 翻译平台已完成修复,目前各项功能均已恢复正常,可流畅使用。在此,我们向一直以来关心和支持浔川 AI 翻译…...

apidoc thinkphp likeadmin 遇到解析报错
报错: [Semantical Error] The annotation "notes" in method app\adminapi\controller\article\ArticleCateController::lists() was never imported. Did you maybe forget to add a "use" statement for this annotation? 解决办法: config/apidoc…...