Nginx企业级负载均衡:技术详解系列(11)—— 实战一机多站部署技巧

在这里插入图片描述
你好,我是赵兴晨,97年文科程序员。

工作中你是否遇到过这种情况:公司业务拓展,新增一个域名,但服务器资源有限,只能跟原有的网站共用同一台Nginx服务器。

也就是说两个网站的域名都指向同一台Nginx服务器,而且还都用的80和443端口,要求各自的静态资源互不干扰,就像两个邻居,虽然住得近,但各有各的生活。

如果你是我,你会怎么搞定这个呢?

其实这个问题很简单,相当于通过两个不同域名,访问PC端域名看到的是PC端网页,访问移动端的域名看到的就是移动端的网页。

下面跟着我,咱们一步步来揭晓答案。

核心配置示例
基于不同的IP、不同的端口以及不同的域名实现不同虚拟主机,依赖于核心模块ngx_http_core_module实现。

1、新建一个PC web站点
以下示例是演示如何将一个PC端的web站点,部署到Nginx服务器上。

这里我们使用的是子配置文件,而不是Nginx的主配置文件(nginx.conf)。

因为使用子配置文件可以保持主配置文件的简介和清晰,便于管理和维护。

1)定义子配置文件路径

# 创建Nginx配置文件存放目录,安装的时候目录是创建好的。
mkdir /usr/local/nginx/conf/conf.d/

2)修改主配置文件(使其引用自配置文件)

# 使用VI编辑器,对nginx主配置文件过 nginx.conf进行修改
# 目的是引入子配置文件路径
vi /usr/local/nginx/conf/nginx.conf
# Nginx 主配置文件
http {# 在配置文件的最后添加# 包含所有conf.d目录下的配置文件include /usr/local/nginx/conf/conf.d/*.conf;
}

3)创建PC web站点配置文件

# 使用VI编辑器 直接新建并编辑 pc.conf
vi /usr/local/nginx/conf/conf.d/pc.conf
编辑内容如下
server {listen 80;server_name chensir.ink;# 定义PC站点的根目录root /data/nginx/html/pc;# 定义网站的首页location / {index index.html;}
}

4)新建PC web站点静态资源(模拟PC web站点)
新建站点主目录,与上面👆🏻location对应。

mkdir -p /data/nginx/html/pc

模拟PC web站点主页

echo "hello pc web" > /data/nginx/html/pc/index.html

5)加载配置文件,访问测试

systemctl reload nginx

在这里插入图片描述

2、新建一个Mobile web站点
与新建PC web站点步骤类似,这里只说关键步骤。

1)创建Mobile web站点nginx子配置文件

# 使用VI编辑器 直接新建并编辑 mobile.conf
vi /usr/local/nginx/conf/conf.d/mobile.conf

编辑内容如下

server {listen 80;# 指定第二个站点名称server_name m.chensir.ink;# 定义mobile站点的根目录root /data/nginx/html/mobile;# 定义网站的首页location / {index index.html;}
}

2)新建mobile web站点静态资源(模拟mobile web站点)

新建站点主目录,与上面👆🏻location对应。

mkdir -p /data/nginx/html/mobile

模拟PC web站点主页

echo "hello mobile web" > /data/nginx/html/mobile/index.html

3)加载配置文件,访问测试

systemctl reload nginx

在这里插入图片描述
总结:我们成功的搭建了PC和Mobile web站点,并且通过演示展示了如何基于域名实现虚拟主机的配置(即给予域名的服务器分发)。

这种方法允许我们根据不同的域名请求来提供相应的内容:

当用户通过PC站点的域名发起请求时,他们看到专为PC端设计的静态页面,这提供了一个优化桌面用户体验。
相应地,当用户通过Mobile站点的域名发起请求时,他们将被引导至专为移动端优化的web站点内容,确保在移动设备上的访问流畅和友好界面。

OK,今天的分享就到这里。希望我的分享能给你的工作带来一点点灵感,哪怕是一丝丝帮助也好。

如果你对Nginx的这个用法有任何疑问,或者有更好的点子,别犹豫,别害臊,直接加我好友,或者在文章底部留言告诉我。

我特别期待能听到你的反馈,无论是问题还是建议,都是我前进的动力。

对了,别忘了,如果你觉得这篇文章对你有帮助,就请点个赞,或者把它分享给更多需要的朋友。你的支持是我最大的荣幸!

更重要的是,如果你喜欢这类内容,别忘了关注我,这样你就不会错过任何更新啦、我们下次见!


最后,我为您准备了一份特别的技术学习礼物,包括:
Linux学习笔记:详尽记录了Linux的核心知识点和实用技巧。
Java基础笔记:为您打下坚实的Java编程基础。
Java面试总结:十万字的面试经验,助您轻松应对各种技术面试。

【一键领取】
领取这份资料包,您只需轻松一扫:
按住👇🏻图片,扫描二维码,备注:【大礼包】‍
通过好友验证后,您的的专属资料包就会立即发送给您。

Linux系统学习笔记、Java基础学习笔记、10万字Java面试总结
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16796.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

过滤器Filter

目录 概述 Filter快速入门 概述 概念:Filter过滤器,是JavaWeb三大组件(Servlet,Filter,Listener)之一。 过滤器可以把对资源的请求拦截下来,从而实一些特殊的功能。 过滤器一般完成一些通用的操作,比如…

python选择框和对话框

目录 1.文件打开和保存的选择框 2.选择或者输入对话框 1.文件打开和保存的选择框 tkinter.filedialog 模块中的 askopenfilename 函数和 asksaveasfilename 函数来显示文件打开和保存的选择框。 这两个函数的作用都是返回一个文件名。如果选择了一个文件,则会返回…

如何找到好的量化交易策略

目录 1 寻找量化交易策略的渠道2 如何筛选适合自己的量化交易策略3 量化交易策略的比较与评估4 人工智能和股票选择 1 寻找量化交易策略的渠道 可以从互联网,公共图书馆,交易员论坛,博客等渠道获取。下面是提供的一些具体资源网址&#xff1…

MySQL(二)基本SQL语句以及基本函数应用

1、基本SQL语句 MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 - 函数应用在sql语句中 -- 临时表 select now() from dual;-- 数…

活动预告|与 Zilliz 共探亚马逊云科技中国峰会

亚马逊云科技中国峰会是由全球云计算的开创者和引领者亚马逊云科技举办的一年一度的科技盛会。 参与者将有机会了解云计算推动行业发展的新趋势与解决方案、生成式 AI 等前沿技术的落地实践,通过大量成功案例解析,获得灵感及经验来解决实际问题&#xff…

民国漫画杂志《时代漫画》第26期.PDF

时代漫画26.PDF: https://url03.ctfile.com/f/1779803-1248635183-9832d2?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

AGV与智能仓储的应用案例

背景介绍 该企业的智能工厂专注于高端家用电器的生产与研发,包括电子坐便盖、电子坐便器、吸尘器、洗碗机等,覆盖8条关键产线。面对日益增长的市场需求和生产节奏的加快,传统的物流方式已无法满足高效、精准的生产要求。为此,企业…

电流采样(分流器与霍尔传感器)

在对于电信号采集的设计中,其中对电流信号的采集是非常常见的,根据电流信号的属性,如信号大小、信号周期等因素,以及采样的需求指标不一样,往往需要选择不同的采样方式进行采样。 下面主要介绍分流器和霍尔元件采样电…

40、商城系统(二十一):利用redisson信号量,mq实现秒杀

目录 一、新建秒杀的微服务 二、定时任务 1.cron表达式 2.springboot整合quartz定时任务

【贪心算法指针】C++ 解决子数组 / 子序列的相关问题(最大数、数组和减半的最小操作数、连续/递增序列)

文章目录 1. 前言1.1 贪心算法介绍 2. 算法题2.1_将数组和减半的最少操作次数2.2_最大数2.3_最长递增子序列2.4_递增的三元子序列2.5_最长连续递增序列2.6_数组中的最长连续子序列2.7_在字符串中找出连续最长的数字串 1. 前言 1.1 贪心算法介绍 贪心算法(Greedy A…

C-数据结构-树状存储的基本实现

/* 理解和记忆递归的关键在于把握递归的本质和函数调用的过程。递归函数在每次调用时会把当前状态压入调用栈,直到满足终止条件后开始回溯。理解基准条件和递归步骤:每个递归函数都需要有基准条件(如节点为空时返回),并…

一文搞透常见的Python编码陷阱(上)(分析+案例)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 一、别忘了冒号 1. if 语句 2. while 语句 3. for 语句 4. 函数定义 5. 类定义 6. try/except 语句 …

STM32 HAL库串口空闲中断 + DMA 收发不定长数据

串口接收缓冲区定义 usart.h #define BUFFER_SIZE 64typedef struct {uint8_t buff[BUFFER_SIZE];uint32_t length;uint32_t rx_flag; }uart_rx_msg;/* 串口接收消息缓冲 */ extern uart_rx_msg rs422_rx_msg; extern uart_rx_msg rs485_rx_msg; extern uart_rx_msg rs232_r…

001 创建单例

文章目录 饿汉模式懒汉模式线程不安全懒汉式(线程安全)“双重检查锁定”(Double-Checked Locking, DCL)实现单例(线程安全)例子 1:两个线程几乎同时请求单例实例例子 2:多个线程在不同时间点请求单例实例例子 3:线程在…

IntelliJ IDEA工具的常用快捷键使用

1.单行注释: ctrl / 2. 多行注释: ctrl shift / 3.查看源码:按 ctrl 别松手,鼠标移动到对应的类名下方,出现下划线,点击过去,可以查看类源码。 4.多行编辑…

RTDETR结合CVPR2024最新图像增强算法!让你的模型无惧风雨【含端到端推理脚本】

如何有效地探索雨痕的多尺度表示对于图像去雨是很重要的。与现有的基于Transformer的方法相比,这些方法主要依赖于单一尺度的雨痕外观,我们开发了一个端到端的多尺度Transformer,利用各种尺度中潜在有用的特征来促进高质量的图像重建。为了更好地探索空间变化的雨痕的常见退…

el-table自定义表头数据不更新

我的表头是有三层的&#xff0c;中间一层展示对应的数据&#xff0c;所以需要自定义&#xff0c;官方的文档显示的写法如下&#xff1a; <el-table-column><template slot“header”><div>{{dayData.supply}}、{{dayData.use}}</div></template>…

Effective C++(1)

文章目录 1. 让自己习惯C条款1&#xff1a;视C为一个语言联邦条款2&#xff1a;尽量以const、enum、inline替换#define条款03&#xff1a;尽可能使用 const条款4&#xff1a;确保对象在使用之前被初始化 1. 让自己习惯C 条款1&#xff1a;视C为一个语言联邦 今天的C已经是多个…

原生html和js实现瀑布流布局(macyjs插件,不依赖于jquery,纯原生)

官网地址 方式一&#xff1a;在github上找到项目&#xff0c;复制demo/assets/css/macy.css&#xff0c;以及/dist/macy.js 直接引入项目 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv&qu…

如何理解类的符号引用?类的直接引用?

在Java中&#xff0c;符号引用&#xff08;symbolic reference&#xff09;和直接引用&#xff08;direct reference&#xff09;是理解Java类加载和内存管理的重要概念。它们涉及到JVM如何在运行时处理类、方法、字段等的引用。下面是对这两个概念的详细解释&#xff1a; 符号…