晚上突然想起来我之前的那个博客后台因为前一个服务器到期之后就停服了

但是里面跑着我的粘贴板、网站仓库、websocket等一众服务

所以又尝试着把它跑起来了,对应的也需要修复新的bug,毕竟切换了服务器,以及之前的nginx代理

然后主要发现了一个问题就是登陆的问题。

部署之后,登陆的时候发现登陆成功但是检查登陆失败。

于是本地又跑了一下前端后后端程序,debug找了一圈没找到原因

起初以为是我忘记修改domain了,但是不是

又以为是我的加密程序出错了,但是还是不是

最后怀疑是不是被拦截了,但是断点进去了,说明没有

找了一圈,突然看到我在cookie类里面有一个log信息:

package cool.hyz.blog.utils;

...

@Slf4j
public class CookieUtils {

    public static void setUpCookie(HttpServletResponse response, String key, String value, int age) {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        HttpServletRequest request = requestAttributes.getRequest();
        
        log.info(request.getServerName());

        ...
    }
}
java

也就是打印出serverName,本地运行的话正常,打印出来的是localhost

然后我回到服务端查看了一下日志信息(之前其实就打印出来了,但是代码已经是几年前的了,日志看不出来个啥了就没留意了),发现打印的是blog-system-server

比较奇怪,但是好在我知道这是什么,blog-system-server是我在nginx里面配置的upstream,也就是负载均衡

但是我漏掉了代理里面的自定义请求头(之前那个里面是配置了的,今天挪过来的时候没留意就没有配置):

server{
    ...
	
    proxy_redirect	off;
    proxy_set_header	Host $host;
    proxy_set_header	Cookie $http_cookie;
    proxy_set_header	X-Real-IP $remote_addr;
    proxy_set_header	X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header	HTTP_X_FORWARDED_FOR $remote_addr;
    proxy_set_header	X-Forwarded-Server $host;
    proxy_set_header	X-Forwarded-Proto $scheme;
    proxy_set_header	X-NginX-Proxy true;
    
    ...
}
shell

加上之后就可以了

这个实际上就是重新定义或添加字段传递给代理服务器的请求头

打赏
  • 微信
  • 支付宝
评论
来发评论吧~
···

歌手: