1、反向代理
1.1 nginx 配置 proxy_pass时可以实现URL路径的部分替换
- 1.proxy_pass的目标地址,默认不带/,表示只代理域名,url和querystring部分不会变(把请求的path拼接到proxy_pass目标域名之后作为代理的URL)
- 2.如果在目标地址后增加/,则表示把path中location匹配成功的部分剪切掉之后再拼接到proxy_pass目标地址
例子:请求 /abc/b.html
server {
location /abc {
proxy_pass http://server_url; #代理地址:http://server_url/abc/b.html
}
location /abc {
proxy_pass http://server_url/; #代理地址:http://server_url/b.html
}
}
1.2 nginx替换响应中的内容
server{
listen 80;
server_name www.test.com;
location / {
#下面5行内容也可以写在http, server里,作用域不一样
sub_filter '首页' '测试一把'; #把 首页 替换成 测试一把
sub_filter 'href="/' 'href="/bbb/ccc/'; #同理
sub_filter 'src="/' 'src="/bbb/ccc/'; #同理
sub_filter_once off;
sub_filter_types text/html; #指定需要被替换的MIME类型,默认为“text/html”,如果制定为*,那么所有类型的文件
proxy_set_header Accept-Encoding ''; #防止返回gzip压缩无法替换
proxy_pass http://127.0.0.1:8080/;
}
}
1.3 转发真实的客户端请求信息
server{
listen 80;
server_name www.test.cn;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8080/;
}
}