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

 在使用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里面可以看到"/> 即可实现免项目名访问

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

时间: 2024-10-24 04:26:03

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

nginx反向代理tomcat提示13 permission denied while connecting to upstream

nginx反向代理tomcat提示13 permission denied while connecting to upstream,网上很多都是说13 permission denied while reading to upstream,这是两个完全不同的错误,我遇到的如下截图: 查看selinux日志发现错误: 后来发现是selinux的问题,于是先关掉selinux:setenforce 0:然后再访问果然好使. 于是启用selinux,再执行下面的命令,修改selinux的值: set

Nginx反向代理Tomcat

系统环境:CentOS 生产环境:WDLINUX WEB引擎:nginx+apache 1.在tomcat中创建虚拟主机 修改tomcat\conf\server.xml,在<Engine>标签中加入<host>标签,如下所示: <Host name="www.abc.com" appBase="/www/webapps" unpackWARS="true" autoDeploy="true" x

Hexo博客部署codingNet静态资源无法加载

用Hexo搭建的个人博客,部署到github的pages的话,好像百度搜索不到.所以在国内的codingNet的pages服务也一起部署一下,这样方便国内国外搜索引擎收录进来.具体部署教程我是参考这里但是今天部署到codingNet的pages服务的时候,发现静态资源都加载不到,后来网上搜索了半天,才发现原来你要打算用codingNet的pages服务部署你的博客的话,你创建项目的名字必须和用户名保持一致,不能自己随便自定义.我重新创建了一个和用户名一致的项目,部署到他的pages服务,访问正常

nginx反向代理tomcat集群实现动静分离

我们都知道,nginx作为一个轻量级的web服务器,其在高并发下处理静态页面的优越性能是tomcat这样的web容器所无法媲美的,tomcat更倾向于处理动态文件,所以一个web应用可以通过nginx反向代理来实现动静分离,静态文件由nginx处理,动态文件由tomcat处理. 环境: hadoop0.updb.com    192.168.0.100    nginx server hadoop2.updb.com    192.168.0.102    tomcat server hadoo

nginx反向代理tomcat集群达到负载均衡,同时使用proxy_cache做web缓存

Nginx最早是作为一款优秀的反向代理软件,以高并发下的卓越性能被越来越多的用户所用户,国内最早研究nginx的是张宴,该大牛的博客地址:http://zyan.cc/ .但是随着需求的发展,nginx的功能已经不再单单是反向代理,现在已经更倾向作为web容器. Nginx从0.7.48版本开始,支持了类似Squid的缓存功能.Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对

nginx反向代理tomcat日志获取真实IP

今天测试一下nginx反向代理功能时,让tomcat日志里获取用户真实IP地址,谷歌了一下,都是一篇文章的内容,复制了tomcat配置文件中的要修改的内容,可怎么也获取不到,神奇了就!无奈之下,仔细读每行复制的内容,发现问题了,估计都要是搜索到那篇文章的话,都得无法获取真实IP地址,就一个小小的地方.开始检查配置内容: (1)nigix  nginx.conf配置文件中: proxy_set_header  Host $host; proxy_set_header  X-Real-IP $rem

Nginx反向代理+Tomcat+Springmvc获取用户访问ip

Nginx+Tomcat+Springmvc获取用户访问ip 1.Nginx反向代理 修改Nginx配置文件 location / { ***********之前代码*******; proxy_set_header host $host; proxy_set_header X-forwarded-for $proxy_add_x_forwarded_for;//设置代理服务器ip头,代码获取时的参数 proxy_set_header X-Real-IP $remote_addr; //允许将发

Nginx反向代理+Tomcat+memcached实现session server

写在前面 前一篇文章为大家解释说明了会话的类型,今天这篇文章将带领大家一步一步实现一个简单的session server,主要是让大家理解session server的工作过程,当然了对于中小向站点,这个结构也完全够用了.本节主体结构: memcached-session-manager介绍 网络拓扑结构 Nginx反向代理配置 Tomcat配置 memcached配置 测试 错误分析 memcached-session-manager介绍 memcached-session-manager是一

使用nginx反向代理tomcat集群

一.反向代理的概念 正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器).为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端.正向代理的情况下客户端必须要进行一些特别的设置才能使用. 反向代理正好相反.对于客户端来说,反向代理就好像目标服务器.并且客户端不需要进行任何设置.客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端,使得这些内容就好似他自己一样,一次客户端并不会感知到反