nginx代理tomcat导致css或js加载失败

  • 目前搬瓦工IP被封非常多,建议使用Vultr,充5刀美5刀,按小时计费,IP随时换---点击注册送5刀
  • Web服务器经常会使用nginx作前置路由,在使用nginx配置Web服务器负载均衡、动静分离,会碰到设置反向代理后导致前端资源无法加载的问题

    nginx反向代理的tomcat服务器导致前端资源css或js加载失败大概可以分为:端口丢失、真实ip或端口获取错误、js或者css太大加载失败等情形

    端口丢失

    之前笔者也有文章单独介绍,可参考http://flyflyfish.com/2018/02/24/nginx%E8%BD%AC%E5%8F%91%E4%B8%A2%E5%A4%B1%E7%AB%AF%E5%8F%A3%E9%97%AE%E9%A2%98/

    反向代理获取真实ip(域名)、端口、协议

    nginx反向代理后,servlet应用通过request.getRemoteAddr()取到的IP是nginx的IP,并非客户端的真实IP;通过request.getRequestUrl()获取的ip(域名)、端口、协议都是nginx对应的参数。

  • 比如nginx的配置:
  • 在浏览器打开http://your.domain.com/test访问servlet应用,获取客户端IP和URL:

  • 针对tomcat+nginx的解决方案:
  • nginx添加如下配置,:

    如果不知道如何添加,可参考nginx转发丢失端口的问题。添加完后,输出结果如下:

    发现RemoteAddr仍然获取不正确,解决方案如下:

  • 方案一:通过request.getHeader(“X-Forwrad-For”)或request.getHeader(“X-Real-IP”)获取到nginx配置的Header。

  • 方案二: 配置tomcat,通过Servlet API的request.getRemoteAddr()方法获取客户端的IP。Tomcat的server.xml,在Host元素内最后加入:

  • JS或css无法完全加载

    nginx的代理缓存区,默认较小导致部分文件出现加载不全的问题,比较典型的如jQuery框架,可以通过配置调整nginx的缓存区即可。

    最终完整配置如下:

    关于nginx的http_proxy模块参数含义:

    参考链接:

  • https://lanjingling.github.io/2015/10/28/nginx-tomcat-cluster/

  • http://www.zving.com/c/2014-03-19/257610.shtml

  • http://blog.csdn.net/xiao__gui/article/details/73733797

  • https://www.jianshu.com/p/5c7d718f15d2

  • 未经允许不得转载:国外便宜VPS » nginx代理tomcat导致css或js加载失败

    赞 (0) 打赏

    觉得文章有用就打赏一下文章作者

    支付宝扫一扫打赏

    微信扫一扫打赏