我的应用程序 example.com 具有以下配置:
这是我的默认nginx配置:
server {
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
listen 80;
server_name example.com.br;
root /usr/local/tomcat7/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/;
}
}
因此,要访问论坛页面,我必须转到 example.com/forum/forum.xhtml (forum.xhtml是索引)
现在,我正在尝试在nginx中设置一个子域, forum.example.com ,它将指向论坛文件夹,保留网址。也就是说,我不希望在URL中看到sufix“/ forum /”。我希望论坛文件夹的行为与 root 相同。因此,如果用户尝试 forum.example.com/anotherPageFromROOT.xhtml ,他将无法做到。
这是我到目前为止所做的:
server {
listen 80;
server_name forum.example.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://127.0.0.1:8080/;
rewrite ^/$ /forum/forum.xhtml break;
}
}
问题:
有人可以帮助我做我应该做的事吗?谢谢!
编辑:
我认为第一个问题的根本原因是JSF为我的action
生成的h:form
。它始终使用/forum/
生成。
答案 0 :(得分:0)
问题#1是这里房间里的大象。你不能(afaik)告诉Tomcat从非ROOT文件夹中提供页面,就好像它们在ROOT文件夹中一样(即,没有在生成的URL中添加文件夹名称)。 path
设置元素有一个Context
属性,但从个人经验来看,更改它(门户组件部署中的错误,使用双重资源的portlet部署两次,等等)并不是一个好主意。 / p>
如果Tomcat有这样的设置(告诉文件夹中的portlet生成根URL),那么尝试使用它,否则你唯一的选择就是在根文件夹中设置另一个带有正确文件的Tomcat,这样生成的URL将没有文件夹前缀。
一旦解决了这个问题,你就可以继续讨论问题#2。如果您使用ROOT文件夹中的论坛文件设置不同的Tomcat,问题就会消失;否则,让我们知道你做了什么。