准备环境
springboot /redirect controller
curl http://localhost:10080/redirect -vv * trying ::1:10080... * connected to localhost (::1) port 10080 (#0) > get /redirect http/1.1 > host: localhost:10080 > user-agent: curl/7.76.1 > accept: */* > * mark bundle as not supporting multiuse < http/1.1 302 < x-content-type-options: nosniff < x-xss-protection: 1; mode=block < cache-control: no-cache, no-store, max-age=0, must-revalidate < pragma: no-cache < expires: 0 < x-frame-options: deny < location: http://localhost:10080/ip < content-length: 0 < date: wed, 26 may 2021 05:55:45 gmt < * connection #0 to host localhost left intact
1. 默认配置
即proxy_redirect default;
location / { proxy_pass http://localhost:10080/; }
效果
curl -vv http://localhost/redirect * trying ::1:80... * connect to ::1 port 80 failed: 拒绝连接 * trying 127.0.0.1:80... * connected to localhost (127.0.0.1) port 80 (#0) > get /redirect http/1.1 > host: localhost > user-agent: curl/7.76.1 > accept: */* > * mark bundle as not supporting multiuse < http/1.1 302 < server: nginx/1.19.3 < date: wed, 26 may 2021 05:57:02 gmt < content-length: 0 < location: http://localhost/ip < connection: keep-alive < x-content-type-options: nosniff < x-xss-protection: 1; mode=block < cache-control: no-cache, no-store, max-age=0, must-revalidate < pragma: no-cache < expires: 0 < x-frame-options: deny < * connection #0 to host localhost left intact
2. proxy_redirect default;
location / { proxy_pass http://localhost:10080/; proxy_redirect default; }
注意,proxy_redirect default必须在proxy_pass下方配置
效果
curl -vv http://localhost/redirect * trying ::1:80... * connect to ::1 port 80 failed: 拒绝连接 * trying 127.0.0.1:80... * connected to localhost (127.0.0.1) port 80 (#0) > get /redirect http/1.1 > host: localhost > user-agent: curl/7.76.1 > accept: */* > * mark bundle as not supporting multiuse < http/1.1 302 < server: nginx/1.19.3 < date: wed, 26 may 2021 06:02:20 gmt < content-length: 0 < location: http://localhost/ip < connection: keep-alive < x-content-type-options: nosniff < x-xss-protection: 1; mode=block < cache-control: no-cache, no-store, max-age=0, must-revalidate < pragma: no-cache < expires: 0 < x-frame-options: deny < * connection #0 to host localhost left intact
与方案1等同
3. proxy_redirect off;
location / { proxy_pass http://localhost:10080/; proxy_redirect off; }
效果
curl http://localhost:10080/redirect -vv * trying ::1:10080... * connected to localhost (::1) port 10080 (#0) > get /redirect http/1.1 > host: localhost:10080 > user-agent: curl/7.76.1 > accept: */* > * mark bundle as not supporting multiuse < http/1.1 302 < x-content-type-options: nosniff < x-xss-protection: 1; mode=block < cache-control: no-cache, no-store, max-age=0, must-revalidate < pragma: no-cache < expires: 0 < x-frame-options: deny < location: http://localhost:10080/ip < content-length: 0 < date: wed, 26 may 2021 06:03:34 gmt < * connection #0 to host localhost left intact
可以看到,302响应的是内部地址。
总结
常规部署情况下,不需要特别配置proxy_redirect或者配置proxy_redirect default即可。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论