如何将Nginx
设置为example.com
到本地运行的Tomcat
webapp的反向代理,而不破坏PageContext
?
存在一个tomcat 7 webappblah
,它与.war
文件一起部署,位于/var/lib/tomcat7/webapps/blah/
中。
Tomcat
在本地运行,可以通过http://127.0.0.1:8080
访问。多个webapp正在运行,可以在以下站点访问:
端口8080
在外部被防火墙阻塞。
Nginx
作为网守在服务器上运行。一个站点可以访问上面提到的所有本地tomcat WebApp。这适用于example.com
:
server {
listen 80;
server_name example.com;
root /var/lib/tomcat/webapps/ROOT/;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/;
}
}
在/etc/nginx/sites-enabled/
下,设置了一个附加的站点文件,以便将http://blah.com
路由到http://127.0.1:8080/blah/
。
server {
listen 80;
server_name blah.com *.blah.com;
root /var/lib/tomcat/webapps/blah/;
location / {
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080/blah/;
}
}
此设置将额外的blah
添加到上下文路径,创建404
页,因为路径/blah/blah/
不存在,这是有意义的。在nginx
中是否有一种简单的方法可以将blah.com
传递给webapp根目录?
在webapp中,我使用${pageContext.request.contextPath}/path
作为webapp资源的相对路径。我认为这是处理内部tomcat路径的正确方法,但这可能是问题的一部分吗?我相信这就是为什么我在路由中获得额外的blah
,创建404
页面。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="0; url=${pageContext.request.contextPath}/form">
<script type="text/javascript">
window.location.href = "${pageContext.request.contextPath}/form"
</script>
<title>Load BLAH</title>
</head>
<body>
<p>If you are not redirected automatically, follow this <a href="${pageContext.request.contextPath}/form">link</a>.</p>
</body>
</html>
这个页面被点击了,但是重定向到/blah/blah/form
,而不是servlet实际存在的/blah/form
。
显然,这是针对nginx
新手的,但请帮助我(以及未来的新手)清除这个问题,因为我无法找到明确的解决方案,而且nginx
文档也使用该帮助。
一个可能的解决方案是在Tomcat
中创建虚拟主机,并将blah
设置为新主机上的root
应用程序。Nginx
将仍然传递请求到localhost上的tomcat
,包括请求的主机头,tomcat将使用正确的上下文处理其余的请求。
>
向$catalina_home/conf/server.xml
的引擎
部分添加主机
项
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
<Host name="blah.com" appBase="blahApps"
unpackWARS="true" autoDeploy="true">
<Alias>www.blah.com</Alias>
</Host>
</Engine>
创建appbase
目录$catalina_home/blahapps/
<Context path="/"
antiResourceLocking="false" />
server {
listen 80;
server_name blah.com www.blah.com;
location / {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
问题内容: 上周受本文启发,我正在重构我必须更明确地将上下文(数据库池,会话存储等)传递给处理程序的应用程序。 但是,我遇到的一个问题是,如果没有全局模板映射,我的自定义处理程序类型(要满足)上的方法将无法再访问该映射以呈现模板。 我需要保留全局变量,或者将我的自定义处理程序类型重新定义为结构。 有没有更好的方法来实现这一目标? func.go struct.go 有没有更干净的方法将实例传递给?
本文向大家介绍Nginx 配置多站点vhost 的方法,包括了Nginx 配置多站点vhost 的方法的使用技巧和注意事项,需要的朋友参考一下 假设你想在Linux Nginx中用不同的域名访问不同的目录,这时就要配置多个vhost,具体配置如下,假设网站根目录设定在/var/www/ 1、在/var/www/下新建两个目录 2、编辑/etc/nginx/nginx.conf 3、在/etc/ng
问题内容: 关于此问题,有什么方法可以将[文件从ASP.NET应用程序直接上传到Amazon S3并具有进度条? -—编辑---- 两天后,仍然没有直接的运气。发现了一件看起来很有前途但又不是免费的东西:http : //www.flajaxian.com/ 使用Flash通过进度条直接上传到S3。 问题答案: 我也在寻找解决方案。也许这会有所帮助, 来自AWS Dev Commnity, 但在许
本文向大家介绍Nginx配置txt、pdf、doc、xls等文件直接下载的方法,包括了Nginx配置txt、pdf、doc、xls等文件直接下载的方法的使用技巧和注意事项,需要的朋友参考一下 使用Nginx时,如果要让一些附件比如 txt,pdf,doc等不直接在浏览器打开,而弹出另存为的对话框(也就是下载) 则可以在nginx的加上头配置如下: 如果客户端请求的文件以txt、pdf、doc、xl
问题内容: tl; dr: 有人知道如何在不设置PATH环境变量的情况下,以代码形式将chromedriver的路径传递给selenium- webdriver吗? 我正在尝试将selenium-webdriver与chrome一起使用,但宁愿不实际安装chromedriver并操纵路径。我有以下代码: 在路径中未设置chromedriver的情况下,将引发错误: 我不想设置路径,所以我从npm安
我用Android将图像上传到Firebase存储。我有一个应用程序,它可以在抓拍照片后立即发送图像。 但我想创建一个应用程序,在发送前在ImageView中显示照片。我想在照片下面写一些文字,然后把它们都上传。 我应该使用哪些工具来执行此操作?我要从存储器下载毕加索。但我无法管理如何在捕获照片后显示ImageView,然后编写一些文本(如名称或描述)并将其发送给Firebase。第二个挑战是如何