getServerPort 和 getLocalPort 的测试

本地配置了 nginx 转到一个 spring boot  应用:

测试内容

浏览器访问  abc.com

nginx 代理转发到 localhost:9999

观察 spring boot  应用 中getServerPort 和 getLocalPort  及 header  内容

spring boot  应用 java 代码

@RestController
@RequestMapping("/v1/ops")
public class DebugController {

    @GetMapping("/test")
    public void testPort(HttpServletRequest request){
        System.out.println("" + request.getServerPort());
        System.out.println("" + request.getLocalPort());
        printHeader(request);
    }

    private void printHeader(HttpServletRequest request) {
        Enumeration names = request.getHeaderNames();
        System.out.println("============================================");
        while(names.hasMoreElements()){
            String name = (String) names.nextElement();
            System.out.println(name + ":" + request.getHeader(name));
        }
        System.out.println("============================================");
    }
}

本地 host 配置

ubuntu 环境下 修改   /etc/hosts 

增加一条  127.0.0.1  abc.com 

这样浏览器访问 abc.com 的时候,实际上访问的是127.0.0.1 

默认 80 端口,也就是访问的本地的nginx 服务器。

nginx 配置

增加了下面这一段:

    server {
        listen       80;
        server_name  abc.com;

        location /v1/ops/ {
            proxy_pass   http://localhost:9999;
        }
    }

sudo nginx -t  // 检查配置

sudo nginx -s reload // 应用配置

运行测试

结果如下

serverPort 和 localPort 都是 9999

修改 nginx 配置:

    server {
        listen       80;
        server_name  abc.com;

        location /v1/ops/ {
            proxy_pass   http://localhost:9999;
            proxy_set_header Host xxxx.com:7777;
        }
    }

serverPort 变为 7777

localPort 保持为 9999

结论:header 中的 host 会影响到 getServerPort 的返回值

猜你喜欢

转载自blog.csdn.net/wuzhong8809/article/details/107184996