域名绑在nginx上,又反代了tomcat
又想以域名直接访问web应用
shiro在处理过程中,用了如下代码
public final void renderMergedOutputModel(Map model, HttpServletRequest request, HttpServletResponse response) throws IOException { StringBuilder targetUrl = new StringBuilder(); if(this.contextRelative && this.getUrl().startsWith("/")) { targetUrl.append(request.getContextPath()); } targetUrl.append(this.getUrl()); this.appendQueryProperties(targetUrl, model, this.encodingScheme); this.sendRedirect(request, response, targetUrl.toString(), this.http10Compatible); }
默认登录拦截contextRelatie=true
导致tomcat每次取出了应用名xxx
但需求是通过域名直接访问应用,且域名不能绑tomcat那台机器,只能绑在nginx上。
nginx反代配置则必须如下(IP:PORT请自定义)
location ^~ / { proxy_pass http://10.10.10.10:8080/xxx/; proxy_set_header Host $host:80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Via "nginx"; break; }
那么由于shiro上面一段代码,会跳转到
http://www.域名.com/xxx/login.html
实际地址变成了http://10.10.10.10:8080/xxx/xxx/login.html
多了一层xxx
怎么解决这个问题呢,解决方案是重写Filter,以下是我重写的一个Filter,仅供参考
import org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter; import org.apache.shiro.web.util.WebUtils; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; /** * Created by jdkleo on 2017/2/10. */ public class PanyAuthcFilter extends PassThruAuthenticationFilter { @Override protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { if(this.isLoginRequest(request, response)) { return true; } else { this.saveRequest(request); String via = ((HttpServletRequest)request).getHeader("Via"); if (via != null && "nginx".equals(via.toLowerCase())){//如果是nginx,就不需要contextRelative上下文关系 WebUtils.issueRedirect(request, response, this.getLoginUrl(),null,false); }else { WebUtils.issueRedirect(request, response, this.getLoginUrl()); } return false; } } }
相关推荐
通过以上步骤,你可以在 Windows 系统上成功配置 Nginx 作为 Tomcat 的反向代理,并实现基本的功能需求。此外,还可以根据具体的应用场景进一步优化配置文件,比如添加 SSL 支持、设置缓存策略等。
在IT行业中,尤其是在服务器部署和优化领域,Nginx与Tomcat的组合是常见的解决方案,因为它们各自在处理不同类型的请求上具有优势。Nginx以其高性能、低资源消耗著称,适合处理静态内容和反向代理任务;而Tomcat作为...
同一ip(都是80端口)可以绑定无数个域名 配置简单 里面包含一个配置文档:配置文档.doc 看一遍 大部分人都会设置了。 内容如下: NGNIX配置文档 1.解压文件到相应文件夹下(我解压到D:/下) (这里是图片) 目录...
"nginx+tomcat shiro实现多tomcat下session共享"这一主题,就是探讨在这样的架构中,如何有效管理和共享session。 1. **Nginx的作用**: Nginx是一个高性能的HTTP和反向代理服务器,常用于负载均衡,可以将用户的...
最后,在主机 A 上安装并配置 Nginx 作为反向代理,负责将请求转发给 Tomcat 集群中的任意一个实例。首先,安装 Nginx: ```bash sudo yum install nginx ``` 接着,编辑 Nginx 的配置文件,定义上游服务器组 `...
### Nginx+KeepAlived+Tomcat负载架构详解 #### 一、概述 随着互联网应用的日益增多,单一服务器已经难以满足高并发、高可用性的需求。因此,越来越多的企业开始采用集群技术来提高系统的稳定性和扩展性。本文将...
在IT行业中,构建一个能够处理多个域名的服务器架构是非常常见的需求。"nginx+tomcat多域名配置"就是一种高效且灵活的解决方案,它结合了Nginx作为前端反向代理服务器和Tomcat作为后端应用服务器的优势。下面将详细...
在 nginx 的配置文件中,需要添加 upstream 块,指定多个 Tomcat 服务器,并将请求分配到这些服务器上。 4. 配置 Tomcat 在 Tomcat 的配置文件中,需要修改 server.xml 文件,指定端口和其他配置。 nginx 配置...
`nginx`作为一款高性能的反向代理服务器和负载均衡器,常用于处理静态资源,而`tomcat`则作为Java应用服务器,主要负责运行Java Web应用。下面我们将详细探讨`nginx1.6`的安装、`tomcat7`的安装以及它们之间的反向...
### Nginx与Tomcat实现负载均衡的知识点详解 #### Nginx简介及特性 Nginx是一款由Igor Sysoev开发的高性能HTTP服务器和反向代理服务器,以其出色的稳定性和低系统资源消耗而著称。最初是为俄罗斯访问量排名第二的...
2. 安装Tomcat:部署多个Tomcat实例,每个实例运行在不同的端口上,以处理来自Nginx的请求。 3. 安装keepalived:解压`keepalived-1.2.22.tar.gz`,编译安装,并配置keepalived的配置文件,指定虚拟IP、主备Nginx...
正确配置后,用户可以通过HTTPS协议访问部署在Tomcat上的应用,提高了安全性。此外,通过调整Nginx的配置参数,还可以进一步优化性能和稳定性。希望这些信息能帮助您顺利完成Nginx与Tomcat的集成配置。
通过学习和实践这些知识点,开发者可以有效地管理和优化在Tomcat上的多域名环境,提高网站的可扩展性和管理效率。对于大型企业或拥有多个在线服务的开发者来说,理解并掌握这些技术是至关重要的。
综上所述,Nginx作为反向代理与Tomcat服务器结合使用,可以实现Web应用的高并发处理和负载均衡。这种组合在生产环境中非常常见,能够有效地提高服务的稳定性和性能。在部署和配置时需要综合考虑操作系统、应用服务器...
3. 配置Tomcat集群:确保每台Tomcat服务器上的应用配置一致,包括应用上下文路径、session复制等,以保证在不同服务器间切换时的会话一致性。 4. 部署应用:将Java Web应用打包成WAR文件,分别部署到每台Tomcat...
在调度器服务器上,需要安装Nginx和Keepalived软件包。首先,需要安装编译工具和插件,然后添加nginx用户和组,解压Nginx安装包,编译和安装Nginx。接着,需要配置Nginx主配置文件,包括worker_processes、error_log...
在现代的Web服务器架构中,Nginx作为高性能的反向代理服务器和负载均衡器,常被用来与Tomcat等应用服务器配合使用,以提高网站的响应速度、稳定性和安全性。本文将详细解析在Linux环境下如何安装和配置Nginx与Tomcat...
在本场景中,我们的目标是创建一个Nginx容器作为负载均衡器,以及多个Tomcat容器作为应用服务器。以下是关键步骤: 1. **编写docker-compose.yml文件**:这个文件会定义我们的服务、网络和卷。例如: ```yaml ...
在构建高性能、高可用性的Web服务时,"Nginx+Tomcat+Redis"的组合是一种常见的架构模式。这个架构充分利用了每个组件的优势,以实现高效的数据处理、动态内容渲染和负载均衡。以下是对这套技术栈的详细解释: 1. **...
由于Tomcat处理动态内容的能力较强,但在处理静态资源时效率较低,因此通常与Nginx配合使用,让Nginx负责静态资源,Tomcat处理动态请求。 配置Nginx+Tomcat集群负载均衡的第一步是安装Nginx和多个Tomcat实例。在多...