【发布时间】:2012-11-11 08:57:52
【问题描述】:
我有一个可以工作的 spring mvc 应用程序。我想让它可供测试用户查看。我已经购买了域名/设置名称服务器和所有 dns 的东西。
我通过这样的本地主机访问我的应用程序:
localhost:8080/myApp
但在现实世界中,我想像mydomain.com 一样访问它。所以我搜索了很多,发现人们将 nginx 推荐为“最快”的这些东西。所以安装了nginx,配置如下:
server {
listen 80;
server_name www.mydomain.com mydomain.com;
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://localhost:8080;
}
} #end server
问题:
当我访问mydomain.com 时,我会看到著名的tomcat 页面If you're seeing this page via a web browser, it means you've setup Tomcat successfully. Congratulations!。
如果我手动转到mydomain.com/myApp,那么一切都会按预期进行。
问题:
我有没有办法配置它来执行以下操作:
当我在地址栏输入 mydomain.com 时,我会转到 mydomain.com/myApp
或者我在这种情况下完全关闭。有更简单的方法吗?
更新:
根据 fvu 的建议,当我将 ROOT 更改为其他目录然后将我的 up 部署到 ROOT 目录中时,我从 tomcat 得到 404:
type Status report
message
description The requested resource is not available.
我可以从服务器日志中检索到这个错误:
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener
java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [/tomcat_9090/webapps/myApp/] instead of [/tomcat_9090/webapps/ROOT
/] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!
更新二:
当我将配置更改为:
proxy_pass http://localhost:8080/myApp/;
该网站看起来可以正常工作,但实际上并没有。链接不起作用,css/js 无法加载。
【问题讨论】:
-
最简单的方法是将您的应用安装为 Tomcat 中的根应用,as explained here
-
重新更新:请参阅 stackoverflow.com/questions/5014651/webapproot-in-spring 了解有关此 Spring 相关问题的信息、解决方案和有用的指针
-
另外,您可能没有取消部署您最初加载的应用程序(如/myApp)?我只会一直加载 1 个副本。
-
谢谢你帮我运行它,我会把它作为备份解决方案(它不是很干净,你必须同意,但它有效)
-
太棒了 :-) 同意,这不是可以想象的最干净的解决方案,但是将应用程序放在 servlet 容器的根目录中总是有点混乱......
标签: tomcat spring-mvc nginx