假设本地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更乱了;有大佬能解释下么?或者说我的文件写错了?
假设nginx搭建在本地, 用的是
HTTP1.1
, 浏览器输入www.test.com
回车:hosts
文件, 发现有该域名的解析,拿到解析的ip: 127.0.0.1
127.0.0.1:80
端口, 并发送http
报文,报文第一行为GET / HTTP/1.1
, 后续数据包括Host: www.test.com
等nginx
拿到报文,发现请求uri
为/
,host
为www.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