Nginx + Tomcat proxyName 用于更多代理

Nginx + Tomcat proxyName 用于更多代理

我想为 nginx 代理的两个域(jira.firstdomain.com、jira.seconddomain.com)配置 tomcat 的代理名称。

因此对于第一个域名我在 nginx 中有这样的配置

upstream jira {
    server 127.0.0.1:8080;
}

proxy_cache_path        /var/run/nginx-cache levels=1:2 keys_zone=nginx-cache:50m max_size=50m inactive=1440m;
proxy_temp_path         /var/run/nginx-cache/tmp;

server {
    server_name jira.firstdomain.com;
    listen 80;
    access_log /var/log/nginx/jira.log combined;
    location / {
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Authorization "";

        set $do_not_cache 0;

        if ($request_uri ~* ^(/secure/admin|/plugins|/secure/project)) {
                set $do_not_cache 1;
        }

        proxy_cache nginx-cache;
        proxy_cache_key "$scheme://$host$request_uri";
        proxy_cache_bypass $do_not_cache;
        proxy_cache_valid 1440m;
        proxy_cache_min_uses 1;
        add_header X-Proxy-Cache $upstream_cache_status;
    }

    location ~*/(feed)$ {
        proxy_ignore_headers Cache-Control;
    }
}

而tomcat的server.xml中有这样的配置

<Connector port="8080"
     maxThreads="150"
     minSpareThreads="25"
     connectionTimeout="20000"

     enableLookups="false"
     maxHttpHeaderSize="8192"
     protocol="HTTP/1.1"
     useBodyEncodingForURI="true"
     redirectPort="8443"
     acceptCount="100"
     disableUploadTimeout="true"
                        
     service="http"
     proxyName="jira.firstdomain.com"
     proxyPort="80"/>

我也想将我的第二个域名指向 tomcat。我需要做什么?

  1. 为 nginx 创建类似的配置?
  2. 在 tomcat 中创建第二个连接器,但使用另一个端口并将 proxyName 设置为 jira.seconddomain.com?

或者有没有更简单的设置?

谢谢

答案1

只需将其添加到 server_name

server_name jira.firstdomain.com jira.seconddomain.com;

当然,只要您希望它指向同一个 JIRA 实例,情况就是如此。

您可以安全地proxyName="jira.firstdomain.com"从连接器上移除,只要您有,它就会工作proxy_set_header Host $host;

您也可以从 nginx 中proxy_set_header X-Forwarded-Host $host;删除proxy_set_header X-Forwarded-Server $host;

对于 SSL,您要么需要具有备用名称的证书,要么需要创建多个服务器块。

相关内容