我有我的应用程序example.com的以下configuration:
这是我的默认nginxconfiguration:
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 。 也就是说,我不希望在URL中看到sufix“/ forum /”。 我希望论坛文件夹的行为作为根 。 所以,如果用户尝试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为我的h:form
生成的action
。 它始终由/forum/
生成。
问题1是房间里的大象。 您不能(afaik)告诉Tomcat从非ROOT文件夹中提供页面,就好像它们位于ROOT文件夹中一样(即,不需要在生成的URL中添加文件夹名称)。 Context
设置元素有一个path
属性,但是从个人经验来看,改变这种情况并不是一个好主意(portlet部署中的错误,使用双重资源时部署两次的portlet等)。
如果Tomcat具有这样的设置(告诉从一个文件夹生成根URL的portlet),那么尝试使用它,否则你唯一的选择是在根文件夹中设置正确的文件的另一个Tomcat,所以生成的URL不会文件夹前缀。
一旦这个问题解决了,你可以转到问题2。 如果您在ROOT文件夹中设置了与Tomcat不同的论坛文件,问题就会消失; 否则让我们知道你做了什么。