所以我有一个基本的设置。我有一个名为domain.com的主域名。在它下面是3个子域。 sub1.domain.com,sub2.domain.com和sub3.domain.com。现在我想将每个请求转发给tomcat,但是我有一个vhost设置,子域是动态的。因此,当我将请求转发到tomcat时,sub1.domain.com可以从sub2.domain.com访问应用程序,因为它们都运行在同一个tomcat实例上。是否可以动态传递此信息。即,当我添加一个新的子域名时,它会自动与其他tomcat实例分开,并且能够获得自己的tomcat实例吗?
这是我的nginx.conf:
server {
listen 80;
server_name *.domain.com;
root /var/www/$host;
index index.php index.html index.htm;
include error_pages;
include php_config;
location /backend {
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Server $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:8080;
}
if (-e /var/www/$host/ssl/$host) {
rewrite ^ https://$host$request_uri? permanent;
}
}
我还有一个https服务器块,但目前并不重要。在第二个注释中,当我尝试访问后端时,我得到404,我该怎么做才能解决这个问题?那么当我去sub1.domain.com/backend时,我得到了tomcat接口?
我对我的nginx.conf文件进行了一些更改,我摆脱了Tomcat 404页面,我可以看到Tomcat正在工作......很好。我可以阅读文字,但就是这样。没有图形界面没有图片只是文字和链接。这就是我的配置文件的样子。
#DOMAIN.COM
upstream backend {
server localhost:8080;
}
server {
listen 80 default;
listen 443 ssl;
server_name www.domain.com domain.com;
root /var/www;
index index.php index.html index.htm;
ssl_certificate certificates/klant.nl.crt;
ssl_certificate_key certificates/klant.nl.key;
include error_pages;
include php_config;
location /backend {
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Forwarded-Server $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://backend/;
}
}
我知道出了什么问题......感觉非常愚蠢。我应该导航到domain.com/backend/而不是domain.com/backend。
答案 0 :(得分:0)
如果Tomcat不关心目标主机名,则将所有域的所有请求映射到Tomcat,并在Tomcat集中使用单个<Host>
作为{{1}的defaultHost
}}
这是Tomcat默认配置的方式:<Engine>
主机,它是引擎的默认主机。部署到该主机的任何Web应用程序(默认情况下都在localhost
中)将响应任何进入的请求,无论HTTP webapps/
标头的内容是什么,它通常选择将处理该虚拟主机的虚拟主机请求。