简介:
tcp/ip是基础的网络协议 http协议是广泛的网络协议
客户端会先经过网关,然后经过互联网,再访问对应的位置。 Nginx可以配置多个虚拟主机server,根据请求的特征来解析,并匹配相应的虚拟主机,然后将请求转发给对应的后端服务进行处理
使用host解析域名
Windows 解析
默认存放在 C:\Windows\System32\drivers\etc\hosts 中
使用notepad++进行打开
将后边的域名解析到前面的ip地址中。 添加运行了Nginx设备的ip地址,并保存。
然后在命令行中ping此域名,可以发现能够ping通这个域名
在浏览器中访问该域名,可以正常访问到nginx的欢迎页
公网域名解析
此处以阿里云控制台简单配置解析为例,进入域名控制台-域名列表中
点击解析,进入域名解析管理页面。
点击添加记录,能够看到不同的记录类型
A:将域名指向一个IPV4地址,是最常用的记录 CNAME:简单将一个域名指向另一个域名
主机记录填 * 时 是泛解析,表示满足格式的所有域名。
Nginx虚拟主机域名配置
常用的做法是在根目录/下创建www目录,然后配置相关的站点
在虚拟机上试着模拟该配置过程 创建如下结构的目录
并在test文件夹下创建 index.html 填入内容
在wwwroot下创建 index.html 填入内容
目录结构如下:
然后修改 nginx 的配置文件 nginx.conf 新建一个server指令域,作为虚拟主机包括以下内容 注意server的端口号不能有冲突
然后重启 nginx ,并查看重启后的 nginx 服务状态
systemctl reload nginx
systemctl status nginx
图示没有问题,访问80/88端口,可以正常收到nginx返回的信息
可是当访问87端口的时候,报错,错误代码:ERR_UNSAFE_PORT
原来Chrome内核的浏览器会拒绝不安全端口的请求。 需要修改配置文件切换到其他的端口,此处修改为89。 然后重启nginx服务,访问89端口。
nginx返回了正确的内容。
将server_name修改为其他域名/主机名,可以不用端口号的形式,而直接访问server_name。
server_name 匹配方式
修改了server_name后,访问用Nginx反向代理的服务器时,请求根据在配置文件中的书写顺序,依次匹配,直到全字匹配到对应的server块(和server_name相同)
server_name 可以使用正则表达式 ~使用通配符的方式匹配
server_name *.hso.com
二级域名
常用于访问对应的应用
www.example.com 用于网站主页
blog.example.com 用于博客
shop.example.com 用于电子商务功能
通过将不同的功能分配给不同的二级域名,可以使站点更易于管理,开发和维护也更加灵活。
Nginx 中可以通过修改 server_name 后的域名指向不同的目录或应用
反向代理:将不同二级域名的请求转发到不同的内部应用。 负载均衡:二级域名也可以对应不同的服务器集群,负载均衡器可以根据不同的二级域名将请求路由到相应的服务器池
HttpDNS
在 Client/Server 架构中,客户端和服务端的通信需要通过网络,域名解析是网络通信中的关键步骤,客户端首先要通过DNS获取服务器的IP地址,类似从电话簿中获取对应的号码一样,然后才能向服务器发送请求。
传统的 DNS 解析是通过 UDP 或 TCP 协议直接进行的,速度比较慢,还会有被劫持的可能。
HttpDNS 是通过 HTTP协议 来完成域名解析,返回更加精确的IP地址。客户端可以通过发送HTTP请求来解析服务器的域名,更快速更安全。