proxy_pass和proxy_set_header浅析
目录背景proxy_passproxy_set_header参考文档背景部署项目,编辑Nginx配置文件时,用到了proxy_pass和proxy_set_header,由于之前用的比较少,所以顺便去了解一波proxy_pass#结尾不加/location /abc/ {proxy_pass http://10.1.12.123:8080;}#结尾添加/location /abc/ {proxy
目录
背景
部署项目,编辑Nginx配置文件时,用到了 proxy_pass和proxy_set_header,由于之前用的比较少,所以顺便去了解一波
proxy_pass
#结尾不加/
location /abc/ {
proxy_pass http://10.1.12.123:8080;
}
#结尾添加/
location /abc/ {
proxy_pass http://10.1.12.123:8080/;
}
以上两段代码区别就是proxy_pass指令后边有没有“/”,这部分内容叫做URI。有的话表示绝对根路径;如果没有,则表示相对路径,把我们匹配的路径部分也代理走
如果我们想要要保持输入的请求原样不变传给后端,那么proxy_pass指令就不能带有URI
(2022-7-23 更新)
Vue项目本地配置代理转发
访问时报错,405(not allowed),查看nginx配置文件
proxy_pass 写的是 http://127.1.2.1:8000/
后面修改为 http://127.1.2.1:8000,去掉 “/”后就能成功访问了,为啥呢?具体来区分一下 末尾有 “/” 和没有的区别
假设我们访问路径为 http://example.com/api/index.html 时
第一种
location /api/ {
proxy_pass http://127.1.2.1:8000/;
}
代理到URL :http://127.1.2.1/index.html
第二种(相当于第一种,末尾少了我们的绝对根路径 / )
location /api/ {
proxy_pass http://127.1.2.1:8000;
}
代理到URL:http://127.1.2.1/api/index.html
修改后就能转发代理成功了
proxy_set_header
proxy_set_header field value;
field :为要更改的项目,也可以理解为变量的名字,比如host
value :为变量的值
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;
X-Forwarded-For: client1, proxy1, proxy2
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Uri $request_uri;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
参考文档
https://blog.csdn.net/u011774517/article/details/122862207
http://nginx.org/
https://www.cnblogs.com/caoweixiong/p/12213993.html
若有不当之处,恳请不吝赐教~
更多推荐
所有评论(0)