Java 当执行到Tomcat的代理传递时,Nginx如何添加子域作为参数
我正在努力实现的目标Java 当执行到Tomcat的代理传递时,Nginx如何添加子域作为参数,java,tomcat,nginx,dns,wildcard-subdomain,Java,Tomcat,Nginx,Dns,Wildcard Subdomain,我正在努力实现的目标 web应用程序应该能够支持多个子域,而无需在每次使用新子域时对nginx或tomcat进行任何更改。(我已经对DNS进行了必要的更改,以支持通配符子域) Nginx侦听端口80。它在端口8080向tomcat传递一个代理。 nginx应该能够支持多个子域 我当前的设置基于此答案。但它没有传递参数 每个可能的子域 动态\u子域\u 1.本地主机 动态\u子域\u 2.本地主机 nginx设置 server { listen 80 default_server;
web应用程序应该能够支持多个子域,而无需在每次使用新子域时对nginx或tomcat进行任何更改。(我已经对DNS进行了必要的更改,以支持通配符子域)
Nginx侦听端口80。它在端口8080向tomcat传递一个代理。 nginx应该能够支持多个子域 我当前的设置基于此答案。但它没有传递参数
每个可能的子域
动态\u子域\u 1.本地主机
动态\u子域\u 2.本地主机
nginx设置
server {
listen 80 default_server;
server_name ~^(?<subdomain>.+)\.localhost$;
location / {
set $args ?$args&site=$subdomain;
proxy_pass http://127.0.0.1:8080;
}
}
我尝试了上述设置,但查询参数始终显示为null
为了实现这一点,我应该在nginx中做哪些更改?答案比这简单一点。只需使用子域获取子字符串,并将其用作proxy_pass的参数:
server {
# this matches every subdomain of domain.
server_name .domain;
location / {
set $new_request_uri "";
set $subdomain "";
if ($host ~* "^(.+)\.domain$") {
set $subdomain $1;
# lets assume there are args...
set $new_request_uri "$request_uri&subdomain=$subdomain";
}
# if there are no args add a question mark and the subdomain argument
if ($args = '') {
set $new_request_uri "$request_uri?subdomain=$subdomain";
}
proxy_pass http://127.0.0.1:8080$new_request_uri;
}
}
我考虑了有无args的请求。我想它解决了你的问题
阿尔弗雷多
server {
# this matches every subdomain of domain.
server_name .domain;
location / {
set $new_request_uri "";
set $subdomain "";
if ($host ~* "^(.+)\.domain$") {
set $subdomain $1;
# lets assume there are args...
set $new_request_uri "$request_uri&subdomain=$subdomain";
}
# if there are no args add a question mark and the subdomain argument
if ($args = '') {
set $new_request_uri "$request_uri?subdomain=$subdomain";
}
proxy_pass http://127.0.0.1:8080$new_request_uri;
}
}