网站用云服务器搭建,只有一个IP且是网站真实IP
Nginx搭建的网站,并不能直接知道真实IP,当访问IP发现这个页面,很有可能这个机器是反向代理服务器。这时,可以访问该服务器开放的其他端口,看是否是正常页面,一般是将其端口的流量转发给真正的web服务器。
其真正的网络拓扑图可能是:
这⾥⽹站通过采⽤Nginx代理服务器来转发流量,可以很好的隐蔽真实的⽹站服务器。我们通过ping只可以得到nginx服务器的ip地址,但是这并不是真正⽹站服务器的ip地址,真正服务器隐藏在nginx代理服务器之后。并且⽹站也可以通过Nginx代理服务器来基于不同端⼝转发和负载均衡。
基于监听不同端⼝的转发
负载均衡 nginx服务器通过监听端⼝,将请求转发给后⾯多台真实的服务器,并且进⾏负载均衡。
本地转发 Nginx服务器就是web服务器。nginx根据请求的⻚⾯的不同后缀(.php / .jsp / 等等),来转发给不同的端⼝进⾏解析。
我们并不能知道⽹站服务器真实的ip地址,这种情况⼤多数是属于稍微⼤型的企业⽤户,拥有⾃⼰的机房。位于内⽹DMZ区的服务器通过NAT映射到公⽹地址。这时,我们通过ping得到的ip地址是企业位于公⽹处的ip地址,并不是真实的ip地址。
更⼤型的企业,出⼝处有⼏个运营商,提供热备份和负载均衡。这时,我们通过域名查询ip地址可以找到3个ip地址。但是这3个ip地址都是出⼝处运营商的ip地址,并不是真正的web服务器的ip地址,真正的web服务器在内⽹中。
这种情况属于有钱的企业,因为CDN的费⽤并不便宜。⽹站通过CDN解析域名,通过中⼼平台的负载均衡、内容分发、调度等功能模块,使⽤户就近获取所需内容,降低⽹络拥塞,提⾼⽤户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。这时,我们通过⽹站域名解析得到的ip地址都是CDN的地址,并不是web服务器真实的ip地址。
端⼝映射就是将内⽹中的主机的⼀个端⼝映射到外⽹主机的⼀个端⼝,提供相应的服务。当⽤户访问外⽹IP的这个端⼝时,服务器⾃动将请求映射到对应局域⽹内部的机器上。⽐如,在内⽹中有⼀台Web服务器,但是外⽹中的⽤户是没有办法直接访问该服务器的。于是可以在路由器上设置⼀个端⼝映射,只要外⽹⽤户访问路由器ip的80端⼝,那么路由器会把⾃动把流量转到内⽹Web服务器的80端⼝上。并且,在路由器上还存在⼀个Session,当内⽹服务器返回数据给路由器时,路由器能准确的将消息发送给外⽹请求⽤户的主机。在这过程中,路由器充当了⼀个反向代理的作⽤。
端⼝转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为⽹络安全通信使⽤的⼀种⽅法。⽐如,我们现在在内⽹中,是没有办法直接访问外⽹的。但是我们可以通过路由器的NAT⽅式访问外⽹。假如我们内⽹现在有100台主机,那么我们现在都是通过路由器的这⼀个公⽹IP和外⽹通信的。那么,当互联⽹上的消息发送回来时,路由器是怎么知道这个消息是给他的,⽽另外消息是给你的呢?这就要我们的ip地址和路由器的端⼝进⾏绑定了,这时,在路由器中就会有⼀个内⽹ip和路由器端⼝对应的⼀张表。当路由器的1000端⼝收到消息时,就知道把消息发送给他,⽽当2000端⼝收到消息时,就知道把消息发送给你。这就是端⼝转发,其转发⼀个端⼝收到的流量,给另⼀个主机
端口转发和端口映射实现的效果是一样的,都是流量转发。区别在于有没有查看包的内容(路由是否主动寻找内网主机并转发)
端口转发:需要查看包的标识,寻找标识对应的主机转发流量,端口绑定的Session持续时间
端口映射:不需要查看包内容,直接转发到绑定的内网主机,人为绑定,长期有效
Lhost ——> proxy ——> Rhost
Lhost为了访问到Rhost,向proxy发送了⼀个请求并且指定⽬标是Rhost,然后proxy向Rhost转交请求并将获得的内容返回给Lhost,简单来说正向代理就是proxy代替了我们去访问Rhost。
正向代理:简单的说,就是客户端主动向代理发送⼀个请求,然后代理向服务器请求并将获取的内容返回给客户端。
Lhost<—>proxy<—>firewall<—>Rhost
Lhost只向proxy发送普通的请求,具体让他转到哪⾥,proxy⾃⼰判断,然后将返回的数据递交回来,这样的好处就是在某些防⽕墙只允许proxy数据进出的时候可以有效的进⾏穿透。除了保证内⽹服务器的安全外,还提供负载均衡的功能。
Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。——百度百科
Apache 根目录(Web 服务器根目录):默认路径为 C:\phpstudy_pro\WWW
(Windows 系统下)。
cgi-bin 文件夹:用于存放 CGI 脚本文件的目录。
CGI(Common Gateway Interface)脚本文件是一种用于处理 Web 服务器和外部程序之间通信的技术。它允许 Web 服务器调用外部程序来处理用户请求并生成动态内容。
eg:
当你去一家餐厅用餐时,你可以将餐厅看作是一个 Web 服务器,而服务员则类似于 CGI 脚本文件。
假设你在餐厅坐下后,你告诉服务员你想要的菜品和要求(用户请求)。服务员将你的请求传递给厨房(外部程序),厨房根据你的要求准备食物(动态内容生成)。最后,服务员将食物端到你面前(结果返回给 Web 服务器),你通过享用食物来完成整个过程。
在这个比喻中,Web 服务器就像是一个接收用户请求并处理动态内容的平台。而 CGI 脚本文件类似于服务员,它接收用户的请求并将其传递给外部程序来处理,并将结果返回给 Web 服务器,最终呈现给用户。
实际中,CGI 脚本文件的例子可以是使用 Perl、Python、Ruby 等编写的脚本文件。它们可以处理用户提交的表单数据、查询数据库、生成动态网页等功能。类似于服务员将你的请求传递给厨房来准备食物,CGI 脚本文件将用户请求传递给外部程序来生成动态内容。
conf 文件夹:包含 Apache 配置文件的目录,如 httpd.conf
、mime.types
等。
error 文件夹:包含 Web 服务器错误页面的目录。
htdocs 文件夹:用于存放网站文件的主要目录。通常,你可以将你的 PHP 文件和其他静态文件(如 HTML、CSS、JavaScript 等)放在这个目录中。
logs 文件夹:用于存放 Web 服务器访问日志文件的目录。
MySQL是一个关系型数据库管理系统**,**由瑞典MySQL AB 公司开发,属于 Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型和大型网站的开发都选择 MySQL作为网站数据库。
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程序一样在网页服务器上执行,但是您可以在任何地方使用这些程序产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确性。
数据库配置文件是指连接数据库需要的配置信息,包括但不限于数据库类型、主机地址、端口、用户名、密码等。在后续的开发、测试、部署中会经常用到。
数据库配置文件作为一项重要的配置文件,需要经常进行更新和改动。比如因为数据库地址、端口号发生改变、数据库密码修改等原因,都需要及时更新数据库配置文件,确保代码可以正常连接数据库,避免出现数据损失和代码崩溃等问题。
数据库配置文件通常存放在应用程序的根目录下或者指定的配置目录中,可以根据实际情况进行修改和配置。在开发中,我们通常将数据库配置文件放在config目录下,并通过指定配置文件名的方式来加载配置文件。
PhpStudy国内12年老牌公益软件,集安全,高效,功能与一体,已获得全球用户认可安装,运维也高效。 支持一键LAMP,LNMP,集群,监控,网站,FTP,数据库,JAVA等100多项服务器管理功能。