nginx和host的关系

发布于 2022-09-11 16:25:04 字数 870 浏览 19 评论 0

假设本地host文件:

www.test.com 127.0.0.1

本地nginx.config文件:

upstream www.test.com {
    server 192.168.10.78:9003 weight=1;
}
upstream static.test.com {
    server 127.0.0.1:8585 weight=1;
}
server {
    listen       80;
    server_name  www.test.com;

    location / {
        proxy_pass http://www.test.com;
    }
    location =/ {
        proxy_pass http://static.test.com;
    }
}

如果我现在在浏览器输入www.test.com回车会发生什么?
1.走nginx被代理到http://192.168.10.78:9003;
2.走host被代理到127.0.0.1
3.先走nginx被代理到http://www.test.com然后走了ho...
如果我现在在浏览器输入www.test.com/abcd/fff回车又会发生什么?
本来对ngin并没有很理解现在配上host更乱了;有大佬能解释下么?或者说我的文件写错了?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

開玄 2022-09-18 16:25:04

假设nginx搭建在本地, 用的是 HTTP1.1, 浏览器输入www.test.com回车:

  1. 检查本地 hosts 文件, 发现有该域名的解析,拿到解析的 ip: 127.0.0.1
  2. 连接 127.0.0.1:80 端口, 并发送 http 报文,报文第一行为GET / HTTP/1.1, 后续数据包括 Host: www.test.com
  3. nginx拿到报文,发现请求uri/, hostwww.test.com。匹配到server_name www.test.com这个server,由于 location =/ 精确匹配优先度比 location / 高, 所以转请求到 http://static.test.com 也就是 http://127.0.0.1:8585/

浏览器输入www.test.com/abcd/fff, nginx匹配到location /, 所以走http://www.test.com, 也就是192.168.10.78:9003

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文