不同情况下处理方式有所不同:
-
输入域名访问:
- 浏览器首先会检查本地缓存,看是否有对应域名的解析记录。
- 如果本地缓存没有,浏览器会查找操作系统的 hosts 文件,看是否有对应的 IP 地址。
- 如果 hosts 文件中没有,浏览器会向 DNS 服务器发起域名解析请求,获取对应的 IP 地址。
-
输入 IP 访问:
- 浏览器会直接使用输入的 IP 地址进行访问,不再进行 DNS 解析。此时不会再向 DNS 服务器发起域名解析请求。
总体来说,如果你直接输入 IP 地址访问,浏览器会跳过 DNS 解析的步骤,直接使用输入的 IP 地址
关于nginx的server_name
如果有多个server监听同一个端口 当用IP访问时候 server_name首先匹配server_name 是对应IP的那个server 如果没有server_name是那个IP 那么哪个server在前就匹配哪个server 当用域名访问时候 哪个server_name和域名相同就用哪个 这里和用localhost或者127.0.0.1无关 只会和请求的host匹配 匹配不到哪个server在前就用哪个
有点绕 在多个域名绑定同一个IP时候
就是说nginx首先会用server_name和请求的host做匹配 匹配上了 就用哪个server
匹配不上的话,哪个server在前就用哪个 和写localhost 127.0.0.1 没半毛钱关系 除非你在本地测试时候,写了localhost或者127.0.0.1 此时也是因为和请求的host匹配