1.通过一个简单的java程序
public class HeadController {
@ResponseBody
@RequestMapping("/head")
public String testHead(HttpServletRequest request){
Enumeration<String> headerNames = request.getHeaderNames();
StringBuffer sbf =new StringBuffer();
while(headerNames.hasMoreElements()){
String element = headerNames.nextElement();
System.out.println(element+":"+request.getHeader(element));
sbf.append(element+":"+request.getHeader(element));
}
return sbf.toString();
}
}
输出所有的请求头信息
2.修改/etc/hosts文件
127.0.0.1 nginx-test.yyf.com
3.nginx配置
server {
listen 80;
server_name nginx-test.yyf.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
4.关于 proxy_set_header Host参数
4.1.直接访问nginx-test.yyf.com:8080/head 不经过nginx
# curl nginx-test.yyf.com:8080/head
user-agent:curl/7.29.0
host:nginx-test.yyf.com:8080
accept:*/*
输出的host是实际访问的host nginx-test.yyf.com:8080
4.2通过nginx 访问nginx-test.yyf.com/head
# curl nginx-test.yyf.com/head
host:127.0.0.1:8080
connection:close
user-agent:curl/7.29.0
accept:*/*
输出的host是转发的请求路径127.0.0.1:8080
默认proxy_set_header Host 选项为$proxy_host 就是你转发的请求host
4.3加上参数
proxy_set_header Host $http_host;
curl nginx-test.yyf.com/head
host:nginx-test.yyf.com/nconnection:close/nuser-agent:curl/7.29.0/naccept:*/*/n
访问的host就变成了实际的访问host nginx-test.yyf.com
4.4.设置固定的值
修改参数
proxy_set_header Host ""kubia.example.com";
curl nginx-test.yyf.com/head
You've hit kubia-t2jmj
访问的页面也变化了,说明host参数能让nginx根据请求找到对应服务
即使访问的url还是 nginx-test.yyf.com/head
参考:https://www.cnblogs.com/jsonhc/p/7199295.html?utm_source=itdadao&utm_medium=referral