Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当执行到Tomcat的代理传递时,Nginx如何添加子域作为参数_Java_Tomcat_Nginx_Dns_Wildcard Subdomain - Fatal编程技术网

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;              
  }                                                              
}