你好,我是赵兴晨,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面试总结