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

news2024/11/15 20:34:45

在这里插入图片描述
你好,我是赵兴晨,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.coloradmin.cn/o/1685471.html

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

相关文章

金融信贷风控基础知识

一、所谓风控(What && Why) 所谓风控,可以拆解从2个方面看,即 风险和控制 风险(what) 风险 这里狭隘的特指互联网产品中存在的风险点,例如 账户风险 垃圾注册账号账号被泄露盗用 交易支付风险 刷单:为提升卖家店铺人气…

小程序-滚动触底-页面列表数据无限加载

// index/index.vue <template> <!-- 自定义导航栏 --> <CustomNavbar /> <scroll-view scrolltolower"onScrolltolower" scroll-y class"scroll-view"> <!-- 猜你喜欢 --> <Guess ref"guessRef" /> </s…

利用Python队列生产者消费者模式构建高效爬虫

目录 一、引言 二、生产者消费者模式概述 三、Python中的队列实现 四、生产者消费者模式在爬虫中的应用 五、实例分析 生产者类&#xff08;Producer&#xff09; 消费者类&#xff08;Consumer&#xff09; 主程序 六、总结 一、引言 随着互联网的发展&#xff0c;信…

利用Anaconda+Pycharm配置PyTorch完整过程

说在前面&#xff1a;这篇是记录贴&#xff0c;因为被配置环境折磨了大半天&#xff0c;所以记录下来下次方便配置&#xff0c;有点像流水账&#xff0c;有不懂的地方可以评论问。 参考文章&#xff1a; https://blog.csdn.net/m0_48609250/article/details/129402319 环境&…

Android:使用Kotlin搭建MVC架构模式

一、简介Android MVC架构模式 M 层 model &#xff0c;负责处理数据&#xff0c;例如网络请求、数据变化 V 层 对应的是布局 C 层 Controller&#xff0c; 对应的是Activity&#xff0c;处理业务逻辑&#xff0c;包含V层的事情&#xff0c;还会做其他的事情&#xff0c;导致 ac…

ChineseOcr Lite Ncnn:高效轻量级中文OCR工具

目录结构 前言opencv编译编译命令编译结果 ncnn设置OcrLiteNcnn编译OcrLiteNcnn1.8.0源码下载OcrLiteNcnn1.8.0源码编译 OCR图片文本识别测试编译文件测试命令编译文件测试输出 模型下载相关链接 前言 ChineseOcr Lite Ncnn&#xff0c;超轻量级中文OCR PC Demo&#xff0c;支…

AI率怎么降低?有哪些论文降重降AI率的工具和方法?

关于aigc降重怎么降重&#xff1f;论文降重有哪些方法&#xff1f;有没有好用的降重软件&#xff1f;网上很多大神都有回答&#xff0c;但是最近还是会有很多学弟学妹会问这些问题&#xff01; 有没有发现论文降重像玄学一样复杂&#xff1f;最近刚完成一篇论文&#xff0c;使…

Python数据可视化(五)

实现GUI效果 借助 matplotlib&#xff0c;除可以绘制动画内容外&#xff0c;还可以实现用户图形界面的效果&#xff0c;也就是 GUI 效果。 GUI是用户使用界面的英文单词首字母的缩写。接下来&#xff0c;我们就以模块widgets中的类RadioButtons、 Cursor 和 CheckButtons 的使用…

说说什么是AOP,以及AOP的具体实现场景(外卖中应用)

推荐B站&#xff1a;【Spring AOP】实际开发中到底有什么用&#xff1f;_哔哩哔哩_bilibili 一、AOP的原理 AOP即Aspect Oriented Program&#xff0c;面向切面编程&#xff0c;是面向对象编程(OOP)的一种增强模式&#xff0c;可以将项目中与业务无关的&#xff0c;却为业务模…

Spark-广播变量详解

Spark概述 Spark-RDD概述 1.为什么会需要广播变量&#xff1f; 广播变量是为了在分布式计算环境中有效地向集群中的所有节点广播大型只读数据集而设计的。 在分布式环境中&#xff0c;通常会遇到需要在所有节点上使用相同的数据集的情况&#xff0c;但是将这些数据集复制到每个…

以及Spring中为什么会出现IOC容器?@Autowired和@Resource注解?

以及Spring中为什么会出现IOC容器&#xff1f;Autowired和Resource注解&#xff1f; IOC容器发展史 没有IOC容器之前 首先说一下在Spring之前&#xff0c;我们的程序里面是没有IOC容器的&#xff0c;这个时候我们如果想要得到一个事先已经定义的对象该怎么得到呢&#xff1f;…

数据结构(树)

1.树的概念和结构 树&#xff0c;顾名思义&#xff0c;它看起来像一棵树&#xff0c;是由n个结点组成的非线性的数据结构。 下面就是一颗树&#xff1a; 树的一些基本概念&#xff1a; 结点的度&#xff1a;一个结点含有的子树的个数称为该结点的度&#xff1b; 如上图&#…

Python | Leetcode Python题解之第107题二叉树的层序遍历II

题目&#xff1a; 题解&#xff1a; class Solution:def levelOrderBottom(self, root: TreeNode) -> List[List[int]]:levelOrder list()if not root:return levelOrderq collections.deque([root])while q:level list()size len(q)for _ in range(size):node q.popl…

夏天晚上热,早上凉怎么办?

温差太大容易引起感冒 1.定个大概3点的闹钟&#xff0c;起来盖被子。有些土豪可以开空调&#xff0c;我这个咸鱼没有空调。 2.空调调到合适的温度&#xff0c;比如20几度。

JAVA基础Day 1面向对象

目录 包调用包 对象和类多态继承重写与重载 抽象接口接口的声明接口的实现 包 package bao;class FreshJuice{enum FreshJuiceSize{small,medium,lager}FreshJuiceSize size; } public class aa {public static void main(String[] args) {System.out.println("hello&quo…

电子招投标系统源码实现与立项流程:基于Spring Boot、Mybatis、Redis和Layui的企业电子招采平台

随着企业的快速发展&#xff0c;招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求&#xff0c;建立一个公平、公开、公正的采购环境至关重要。在这个背景下&#xff0c;我们开发了一款电子招标采购软件&#xff0c;以最大限度地控制采购成本&#…

大数据量MySQL的分页查询优化

目录 造数据查看耗时优化方案总结 造数据 我用MySQL存储过程生成了100多万条数据&#xff0c;存储过程如下。 DELIMITER $$ USE test$$ DROP PROCEDURE IF EXISTS proc_user$$CREATE PROCEDURE proc_user() BEGINDECLARE i INT DEFAULT 1;WHILE i < 1000000 DOINSERT INT…

SpringBoot实现增量部署

目录&#xff1a; 1、使用背景2、实现流程3、部署增量包到项目中并启动4、说明 1、使用背景 最近发现公司发布版本时候&#xff0c;很齐全&#xff0c;接口文档&#xff0c;部署方式等都很好&#xff0c;其中有个增量部署包&#xff0c;有点兴趣&#xff0c;不清楚怎么生成增量…

【基于 PyTorch 的 Python 深度学习】9 目标检测与语义分割(1)

前言 文章性质&#xff1a;学习笔记 &#x1f4d6; 学习资料&#xff1a;吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容&#xff1a;根据学习资料撰写的学习笔记&#xff0c;该篇主要介绍了目标检测的相关概念及主要挑战。 第九章の…

大象资讯:PostgreSQL 17 Beta 1 发布!

↑ 关注“少安事务所”公众号&#xff0c;欢迎⭐收藏&#xff0c;不错过精彩内容~ PostgreSQL 全球开发小组 发布于 2024-05-23 PostgreSQL 全球开发小组宣布&#xff0c;PostgreSQL 17 的第一个测试版本现已可供下载。此版本包含 PostgreSQL 17 正式发布时将提供的所有功能的预…