当前位置: 首页 > news >正文

你还在用一串数字访问你的系统吗?

大家还记得第一次启动SpringBoot应用并在浏览器访问是如何进行的吗?在SpringBoot启动后,我们会看到如图所示:

SpringBoot内置tomcat以端口8080启动,然后根据指引,我们在浏览器输入:

http://127.0.0.1:8080/xxx 

就可以访问到我们本地的页面或者接口。

HTTP链接分析

按照http链接的格式:http://127.0.0.1:8080/xxx 总共可以分为以下四个部分:

http - 协议头

127.0.0.1 - 请求IP

8080 - 请求端口

xxx - 请求URI(接口具体路径或者文件地址)

这四部分看起来很简单,但是我们想要把我们的网站推广出去,我们肯定不能用我们的本地IP,如果是局域网访问,我们需要使用局域网IP替换127.0.0.1,如果是公网,则需要使用公网IP替换,假如我们的公网ip为100.78.26.37,你那么如果我们把一串这样的数字发布出去,对于客户来说是难以记忆的。

那有没有办法优化这个地址方便记忆,快速传播。那就是通过域名的方式,

例如我们的CSDN:https://www.csdn.net/,就非常容易记住,并且假如我们IP变了话,这个域名依然不变。

那我们具体怎么通过域名来表达具体的IP地址呢,接下来就请出我们今天的主角:nginx

插播一则通告:本人在代码一线工作近八年时间,有非常丰富的面试经验,有需要优化简历,模拟面试,面试辅导的同学可以联系V:xiaolang1530368931。将简历优化成大厂面试官想看的,提前回答大厂面试官可能会问的问题,为进大厂做最后的冲刺。

一次浏览器域名请求发生了什么

我们以 https://www.csdn.net/  为例,这里咱们暂且不讨论https,咱们到时候另出一篇文章讲解https,这里咱们只讨论域名解析。

了解域名请求之前,咱们要先科普几个知识点:

  1. http请求的默认端口为80,https的默认端口为443。
  2. 域名分为多级域名,域名之间用点隔开,从右至左开始依次递增:
    1. 格式:xxx.三级域名.二级域名.顶级域名
    2. 例子: https://www.csdn.net/ , www即三级域名,csdn即二级域名,net即为顶级域名
  3. 根域名服务器、顶级域名服务器、主域名服务器总的来说就是域名解析服务器不同等级的不同叫法,本质上就是域名解析服务器,类似Java的类加载机制,先自己解析,如果自己解析不了,就逐级向上询问。

整个域名解析的流程图如下:

nginx实践

有了基础理论知识之后,那我们具体怎么使用nginx在本地搭建一个系统可以通过域名访问呢?

刚才我们了解了DNS的解析流程,因为我们是本地搭建,不会去运营商注册域名,更不会去根服务器以及更高级的DNS解析服务器,所以我们配置本地hosts解析即可。

配置hosts

  1. 配置本地DNS解析,例如我们想搭建一个自己的个人博客,我们取名为:http://www.coffeengineeralex.com/ 
  2. 那我们需要在本地hosts文件(如何找到,自行查阅资料)末尾添加一行配置:
    1. 127.0.0.1       www.coffeengineeralex.com

搭建nginx

怎么安装nginx,可以自行查询资料,这里仅介绍mac如何安装nginx,使用mac安装nginx非常简单,只需要使用如下命令就可以安装:

brew install nginx

安装完成之后,我们可以使用如下命令查看nginx的安装位置:

brew info nginx

根据提示信息,我们看到nginx默认是以8080端口启动的。

在变更nginx配置之前,我们先看下nginx是否安装成功,尝试启动nginx,直接使用如下命令就可以启动nginx:

brew services start nginx

启动完成之后,我们直接访问http://localhost:8080/,如果安装成功,我们就可以看到nginx的欢迎页面:

nginx完整的配置如何配置我们在此暂不做展开,有兴趣的我们可以再出一篇文章,我们仅配置域名解析所需要的,我们调整nginx配置如下:


worker_processes  1;events {worker_connections  1024;
}http {server {# 监听80端口listen       80;# 域名为www.coffeengineeralex.comserver_name  www.coffeengineeralex.com;# 默认访问的地址为location / {# 代理到本地启动的端口为8091的SpringBoot服务proxy_pass http://127.0.0.1:8091;}}include servers/*;
}

刷新nginx配置

再调整完nginx配置后,我们需要将nginx配置刷新才会生效,我们使用以下命令进行刷新

nginx -s reload

刷新完nginx配置后,我们在本地启动一个端口为8091(这里因为nginx默认端口为8080,所以我们把后端服务的端口调整一下,避免出现一些不可知的问题)的SpringBoot服务,并定义一个http接口,例如我们自定义一个hello接口:

    @RequestMapping(value = "hello")public Object hello() {return "hello";}

我们在浏览器输入http://www.coffeengineeralex.com/hello ,神奇的一幕发生了,浏览器正常响应了我们请求,并返回了正确结果。

各位同学的毕业设计是不是又多了一个 “装” 起来的选项,其他同学的网站都只能一串数字访问,但是咱们的网站已经可以通过域名访问了,更加接近真实的网址,快去 “装” 起来吧。

拓展

像我们后端服务,一般不会配置单点,都是以集群的方式出现,那如果我们有多台机器,nginx应该如何配置,因为我们是本地搭建,所以我们在本地起三个SpringBoot应用,分别以8091,8092,8093启动搭建一个伪集群。

有了集群之后,我们的nginx配置如下:


worker_processes  1;events {worker_connections  1024;
}http {upstream backend-cluster {server 127.0.0.1:8091 weight=1;server 127.0.0.1:8092 weight=2;server 127.0.0.1:8093 weight=3;} server {# 监听80端口listen       80;# 域名为www.coffeengineeralex.comserver_name  www.coffeengineeralex.com;# 默认访问的地址为location / {# 代理到本地启动的端口为8091的SpringBoot服务proxy_pass http://backend-cluster;}}include servers/*;
}

PS:weight越大,被分发的可能性越大。

我们使用nginx -s reload刷新nginx配置后,可以发现我们不管关掉三个节点中的任意两个节点都是能正常访问的,说明我们的集群已经生效了。这里有个需要特别注意的点就是,不同的tomcat版本可能不支持upstream后名字带_(下划线),所以如果访问报错,我们把 _ 去掉即可。

总结

nginx的功能很强大,配置也是十分丰富,本文只是详细讲解了nginx的初步搭建,具体https证书、跨域、负载均衡策略等等如何配置我们都还没有讲到,看各位同学对nginx的详细配置是否感兴趣,我们可以出一个章题来详细讲讲nginx配置,毕竟它在我们工作中太重要了。


以上就是关于通过nginx搭建域名访问系统的全部内容,如果大家觉得有一点点受益的话,希望点赞、评论、转发来支持我做更加优质的分享。

分享一句非常喜欢的话:把根牢牢扎深,再等春风一来,便会春暖花开。

PS:以上引用信息以及图片均来自网络公开信息,如有侵权,请留言或联系

504401503@qq.com,立马删除。


http://www.mrgr.cn/news/64930.html

相关文章:

  • 计算机网络面试题三道之二
  • 优选算法精品课--滑动窗口算法(一)
  • 消息队列面试——打破沙锅问到底
  • 【HTML】——VSCode 基本使用入门和常见操作
  • 【C++篇】跨越有限与无限的边界:STL之set容器中的自我秩序与无限可能
  • 刘艳兵-DBA015-对于属于默认undo撤销表空间的数据文件的丢失,哪条语句是正确的?
  • Android IPC机制(三)进程间通信方式
  • CentOS8.5.2111(6)冬日阳光下跳一曲桑巴--SAMBA共享存储
  • 免费送源码:Java+springboot+MySQL springboot 线上线下一体化的宠物交易 计算机毕业设计原创定制
  • 关于Mac打包ipa的配置小结
  • 算法中使用的数据结构解释*
  • Ubuntu18.04服务器非root用户在虚拟环境下的python版本设定
  • [SICTF Round4] PWN
  • 【算法】选择排序
  • 基于STM32的农业监测与管理系统设计思路介绍(代码示例)
  • 程序员的减压秘籍:高效与健康的平衡艺术
  • Docker篇(registry私服)
  • C++ 优先算法 —— 查找总价格为目标值的两个商品(双指针)
  • 代码随想录day15| 110.平衡二叉树 、 257. 二叉树的所有路径 、 404.左叶子之和、 222.完全二叉树的节点个数
  • dockerfile/docker-compose构建镜像上下文目录编写要点
  • 进程间通信小练习
  • 电子电气架构 --- Trace 32(劳特巴赫)多核系统的调试
  • 第1篇 引言
  • vscode ssh+clion+idea等本周小结-2024.11.3
  • 阿里巴巴Seata分布式事务解决方案
  • ubuntu20安装opencv3.2记录