从http请求过程分析为何不同业务的http请求都可以使用默认的缺省端口80,8080等

news2025/7/21 10:06:48

问题:

http上传请求时url地址中一般无显示指定端口号,这时会使用默认的80端口;但是可能不止一个业务需要用到http请求,技术上web服务端那边肯定无法根据业务逻辑的数据格式去分别解析区分它们;因为业务是事先无法预知的;如果url解析的域名对应了不同ip地址那还好说=>不同ip上端口号重复也
无所谓;但是如果不同业务的http请求对一个ip进行【这是肯定的,因为不可能一台主机硬件只是为了一种业务的http请求,要满足多种业务的http请求要开多台主机;这也太浪费资源与降低效率了】如果说http请求时显示指定端口号,这样对于浏览器或者客户端而言使用上就不怎么方便透明了;

解决:反向代理服务器

客户端输入域名,通过DNS将域名解析成为服务器ip,找到代理服务器,因为http协议服务所占用的端口默认为80端口,所以会访问服务器的80端口,然后再通过代理服务器将请求转发到不同的服务器以及端口中.如图:域名和端口号的对应

在这里插入图片描述

一台主机上开启多个端口进行http业务处理;而又不把端口暴露给浏览器或者客户端,这时就需要类似于端口映射的效果了=>把不同的域名映射到同一ip的不同端口上【不同的域名对应不同的业务http请求,但是请求端口可以保存一致,比如说80】这样就实现了一台主机上不同端口处理不同的http业务;转化成了客户端或者浏览器那边对于不同域名的http请求;好了现在对于客户端和浏览器来说使用http请求是方便透明的了;而这个类似端口映射的效果就是反向代理服务器干的活;不同的域名被dns解析后可能对应同一个ip,这个ip是反向代理服务器的ip并且访问其80端口;反向代理服务器根据域名的不同把请求转发给真正的后台处理服务器的ip和其端口上【参见下面Nginx反向代理的配置示例】【这个80端口也是一般协定预留的,反向代理服务器上完全可以进行其他端口的配置如8080端口等】

1.2 场景假设
假设有两台机器,一台机器 192.168.5.61 作为代理服务器,一台机器 192.168.5.24 作为内网服务器。
下面以 Windows 系统为例进行配置。3. 反向代理配置
3.1 说明
访问代理服务器env.finedevelop.com:56108/WebReport/ReportServer?op=fs,代理将请求都转给内网报表服务器 192.168.5.24:8080,从而实现对内网报表服务器的访问。
注:这个属于常规环境配置,客户需要根据自己的网络环境自行配置,这里配置步骤仅供参考。
代理服务器配了一个端口映射,可以被外网访问 192.168.5.61:8443—>env.finedevelop.com:56108
内网报表服务器的访问地址是 192.168.5.24:8080/WebReport/ReportServer?op=fs3.2 步骤
1)代理服务器的部署同上,下载并安装 Nginx。
2)修改 Nginx 配置文件conf/nginx.conf,在http{}之间添加如下代码:

server {
listen 8443; # listen 端口,代理服务器的端口,可以自定义
server_name env.finedevelop.com; # server_name,写的代理服务器的地址
location / {
proxy_pass http://192.168.5.24:8080; # 转发地址 内网服务器的 IP 和端口
proxy_set_header Host env.finedevelop.com:56108; # 转发的请求里的 host 信息,,写的打开在浏览器里 URL 的地址
}
}
3)重启 Nginx,浏览器内输入env.finedevelop.com:56108/WebReport/ReportServer可以正常登录并访问服务器,则表示配置成功。
即可通过env.finedevelop.com:56108/WebReport/ReportServer?op=fs访问内网服务器,同时在 微信/钉钉 管理中也可以同步获取通讯录了。

最后来说一说 ip和域名的关系:

ip地址和域名是一对多的关系,一个ip地址可以有多个域名,但是相反,一个域名只能有一个ip地址;
首先多个域名根据dns解析成同一个ip地址,这个很好理解;这也是反向代理服务器能工作的基础【 不同域名的http业务请求被同一个反向代理服务器接收】 所以 ip和域名 是一对多;
而在同一时刻同一台电脑(该电脑对应的地域dns服务器)一个域名只能被解析成一个ip;这个也很正常,因为只有这样才能确定http请求直接发送给谁;

最后聊聊DNS服务器是如何解析的:实话说我并不清楚dns如何把域名解析成ip的,但是不管是dns服务器动态修改域名-ip对应表,还是不同地域的dns服务器对同一个域名解析出不同的目标ip=>所造成的只不过是同一域名在不同时段或者不同地域上对应不同ip的假象【即:同一时刻同一地域一个域名只能被解析成一个ip】
IP地址和域名的关系
1、ip地址和域名是一对多的关系,一个ip地址可以有多个域名,但是相反,一个域名只能有一个ip地址;

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

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

相关文章

【Spring Cloud实战】Consul服务注册与发现

个人博客上有很多干货,欢迎访问:https://javaxiaobear.gitee.io/ 1、简介 https://www.consul.io/docs/intro Consul is a service mesh solution providing a full featured control plane with service discovery, configuration, and segmentation f…

Flink-经典案例WordCount快速上手以及安装部署

2 Flink快速上手 2.1 批处理api 经典案例WordCount public class BatchWordCount {public static void main(String[] args) throws Exception {//1.创建一个执行环境ExecutionEnvironment env ExecutionEnvironment.getExecutionEnvironment();//2.从文件中读取数据//得到…

[附源码]java毕业设计基于Web留学管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Linux下C++开发笔记--编译静态链接库和动态链接库

目录 1--前言 2--生成静态链接库 3--生成动态链接库 1--前言 承接上一篇Linux下C开发笔记(g命令的使用笔记),依据教程记录学习笔记。 2--生成静态链接库 ①回顾项目结构: ​ ②汇编,生成swap.o文件 cd srcg sw…

基于simulink的牛鞭效应模型建模与仿真

欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程》 目录 一、理论基础 二、核心程序 三、测试结果 一、理论基础 牛鞭效应,是经济学中的一个术语,它也被称为需求放大效应。牛鞭效应指的是当信息流从最终客户端传输到原始供应商时&…

9.行为建模(Behavioral modeling)

9.1行为模型概述 Verilog行为模型包含控制模拟和操纵先前描述的数据类型变量的过程语句。这些语句包含在程序中。每个过程都有一个与其关联的活动流。活动开始于initial和always语句。每个initial语句和每个always语句都会启动一个单独的活动流。所有活动流都是并发的&…

【机器学习】线性分类【上】广义线性模型

主要参考了B站UP主“shuhuai008”,包含自己的理解。 有任何的书写错误、排版错误、概念错误等,希望大家包含指正。 由于字数限制,分成两篇博客。 【机器学习】线性分类【上】广义线性模型 【机器学习】线性分类【下】经典线性分类算法 1. 线…

C语言实现线索化二叉树(先序、中序、后序)

》》如何用C语言构建一颗二叉树? 第一种方法: ThreadTree A = (ThreadTree)malloc(sizeof(ThreadNode));A->data = { A };A->ltag = 0;A->rtag = 0;A->lchild = NULL;A->rchild = NULL;ThreadTree B = (ThreadTree)malloc(sizeof(ThreadNode));B->data =…

【python自动化】使用关键字驱动实现appium自动化

在写app自动化用例时,尝试用了关键字驱动的框架 记录一下自己对关键字驱动的理解: 1 关键字驱动指将用例步骤的操作封装为关键字,比如定位元素、点击元素、获取元素属性值、断言,这些都是操作关键字 2 在excel中按照用例执行过程&…

Java8方法引用和Lambda表达式实例源码+笔记分享

前言 Java8的lambda表达式,通过lambda表达式可以替代我们之前写的匿名内部类来实现接口。lambda表达式本质是一个匿名函数。 1、lambda表达式本质是一个匿名函数。 1 package com.demo.main;2 3 public class LambdaMain {4 5 public static void main(String[…

环辛炔衍生物DBCO-NH2,amine,Acid,NHS,Maleimide无铜点击反应

DBCO对叠氮化物具有非常高的反应选择性,可用于修饰生物分子,包括肽、蛋白质、酶、活细胞、整个生物体等。在生理温度和pH值范围内,DBCO基团不与胺或羟基反应,DBCO也与叠氮化物基团发生反应DBCO也称为ADIBO(氮杂二苯并环…

2022.11.15-二分图专练

目录 50 years, 50 colors(HDU-1498) Uncle Toms Inherited Land*(HDU-1507) Matrix(HDU-2119) Arbiter(HDU-3118) [ZJOI2007]矩阵游戏(黑暗爆炸1059) Jimmy’s Assignment(HDU-1845) 50 years, 50 colors(HDU-1498) 原题链接:传送门 题意:一个n*n的矩阵中,…

第四章. Pandas进阶—数据格式化

第四章. Pandas进阶 4.1 数据格式化 1.设置小数位数(round函数) DataFrame.round(decimals0,*args,**kwargs)参数说明: decimals:用于设置保留的小数位数 args,kwargs:附加关键字的参数 返回值:返回DataFrame对象 1).示例&#…

HTML常用标签的使用

HTML常用标签的使用 文章目录HTML常用标签的使用1.排版标签1.1 标题标签(h)1.2 段落标签(p)1.3 换行标签(br)1.4 水平线标签(hr)2.文本格式化标签(strong、ins、em、del&…

Vue(七)——Vue中的Ajax

目录 Vue脚手架配置代理 插槽 默认插槽 具名插槽 作用域插槽 Vue脚手架配置代理 本案例需要下载axios库:npm install axios 1.配置类方式(实现WebMvcConfigurer) 2.使用CrossOrigin注解 3.使用nginx反向代理解决跨域 4.Vue中配置代理服务器 代理服务器怎…

懒人的法宝——办公自动化!

没错!办公自动化他来了!果然,代码都是懒人发明出来的。接下来让我们一起来看看这个批改作业的自动化脚本吧!学会了这种思想可以帮助我们高效解决许多重复性的工作,比如说批量修改文件的名称、类型、位置等等&#xff0…

【附源码】计算机毕业设计JAVA计算机系教师教研科研管理系统

项目运行 环境配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis Maven Vue 等等组成,B/…

计算机网络-网络层(BGP协议,IP组播,IGMP协议与组播路由选择协议)

文章目录1. BGP协议BGP协议报文格式2. RIP,OSPF,BGP协议对比3. IP组播4. IGMP协议与组播路由选择协议1. BGP协议 与其他自治系统的邻站BGP发言人(BGP边界路由器)交换信息 BGP边界路由器之间交换网络可达性的信息,即要…

C++Qt开发——SMTP协议

1. SMTP协议简介 SMTP协议:全称为 Simple Mail Transfer Protocol,简单邮件传输协议。它定义了邮件客户端软件和SMTP邮件服务器之间,以及两台SMTP邮件服务器之间的通信规则。 SMTP是一个相对简单的基于文本的协议。在其之上指定了一条消息的…

网络安全之命令执行漏洞复现

0x01 漏洞介绍 漏洞等级:严重 Webmin是功能最强大的基于Web的Unix系统管理工具。管理员通过浏览器访问Webmin的各种管理功能并完成相应的管理动作。在版本1.997之前的Webmin中存在一个任意命令注入漏洞,触发该漏洞需登录Webmin。 0x02 漏洞影响范围 …