码迷,mamicode.com
首页 > 其他好文 > 详细

Nginx反向代理Tomcat静态资源无法加载以及请求链接错误

时间:2019-10-13 21:00:56      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:解决   clu   col   静态   情况   mime   tomcat8   contex   use   

 在使用Nginx实现Tomcat的负载均衡的时候,项目发布到了Tomcat,Nginx也配置好了,

当访问的时候发现了与预期不符

表现为:

  静态资源加载失败

  链接跳转地址错误

 

下面是我错误的配置文件

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;
    
    upstream dailyLB{
        server 169.254.18.25:8080;
        server 169.254.18.25:8081;
    }
    

    server {
        listen       80;
        server_name  169.254.18.25;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /home/ftpuser;
        }

        #error_page  404              /404.html;
    }
    
    server {
        listen            808;
        server_name     169.254.18.25;
        
        location /{
            proxy_pass    http://dailyLB;
        }

    }

}

 

 

Nginx可以访问tomcat

但是启动后,你会发现,可以访问默认的首页,但是没有静态文件

技术图片

 

 然后当我点击登录的时候跳转的地址是这样的,根本无法加载

技术图片

 

 

 dailylb是我的 upstream的指定地址,但是我的tomcat实际要访问的确是169.254.18.25:8080,这就导致了,访问的地址错误,那么也就无法访问请求

 

解决方案:

在Nginx的配置文件中nginx.conf里面配置server的地方加上如下配置

location ~ .* {
            proxy_pass     http://你的upstream配置的名称;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Fonwarded-For $proxy_add_x_forwarded_for;
        }

 

这时我的配置完正确的nginx配置文件供参考,


#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;


#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

upstream dailyLB{
server 169.254.18.25:8080;
server 169.254.18.25:8081;
}

server {
listen 80;
server_name 169.254.18.25;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root /home/ftpuser;
}

#error_page 404 /404.html;
}

server {
listen 808;
server_name 169.254.18.25;

location /{
proxy_pass http://dailyLB;
}

location ~ .* {
proxy_pass http://dailyLB;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Fonwarded-For $proxy_add_x_forwarded_for;
}
}

}

 

修改完后,去重新加载nginx的配置文件即可解决问题

/nginx -s reload

 

注意:

  我的tomcat配置了context所以不需要通过项目名即可直接访问项目,没有配置的情况下是需要这样的  

  http://nginx反向代理访问的地址:port/项目名

 

  那么如何配置不需要项目名即可访问的呢?

在tomcat的conf/server.xml文件中
Host标签中添加<Context path="/" docBase="/usr/local/soft/n2-tomcat8/webapps/consumer 这里就是你项目名字,在webapps里面可以看到"/>
即可实现免项目名访问

 

技术图片

 

Nginx反向代理Tomcat静态资源无法加载以及请求链接错误

标签:解决   clu   col   静态   情况   mime   tomcat8   contex   use   

原文地址:https://www.cnblogs.com/arebirth/p/nginxerror02.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!