ingress rewrite 配置文件的结构 + server_name和location这两条指令的配置来匹配要 虚拟主机
kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/rewrite-target: http://www.oneway.cn 后面没有分号。
参考:https://blog.csdn.net/qingyafan/article/details/82692509
1. rewrite break - url重写后,直接使用当前资源,不再执行location里余下的语句,完成本次请求,地址栏url不变
3. rewrite redirect – 返回302临时重定向,地址栏显示重定向后的url,爬虫不会更新url(curl返回请求页面)
4. rewrite permanent – 返回301永久重定向, 地址栏显示重定向后的url,爬虫更新url (浏览器显示成新的URL)
如果location中rewrite后是对静态资源的请求,不需要再进行其他匹配,一般要使用break或不写,直接使用当前location中的数据源,完成本次请求
3.Nginx等服务器是如何知道一个请求对应的是哪个域名的呢?
答案在于HTTP协议中的Host请求头,其值为我们要访问的域名。这里需要注意的是,在HTTP/1.0中是不支持Host请求头字段的,所以HTTP/1.0是不支持虚拟主机技术的,
而根据rfc2616规范HTTP/1.1协议中客户端发送的请求必须带上Host这个请求头,否则服务器必须返回400 Bad Request响应。
参考:https://segmentfault.com/a/1190000021771733
4. 配置文件形式:
# 每个 server 就是一个虚拟主机
http {
include /etc/nginx/conf.d/*.conf;
# ...
server{
# ...
}
# ...
server{
# ...
}
}
具体配置文件
# Demo upstream web_pro_testin { server 10.42.46.70:6003 max_fails=3 fail_timeout=20s; ip_hash; } server { listen 80; server_name web.pro.testin.cn; location / { proxy_pass http://web_pro_testin; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location ~ ^/(WEB-INF)/ { deny all; } }
参考:一文入魂!彻底巩固你的Nginx知识体系!_牛客博客 (nowcoder.net) https://blog.nowcoder.net/n/2cec4b7c85c84c9abe537319b44eb59d?from=nowcoder_improve
用一个例子来演示会更加清晰