docker + nginx + tomcat: несоответствие портов response.sendRedirect - PullRequest
0 голосов
/ 27 сентября 2019

Docker открывает порт 30080

Порт прослушивания Nginx 80

Порт прослушивания Tomcat 6.0 8080

Веб-сервер хорошо работает с этими настройками, но имеет небольшую проблему с ответом.sendRedirect в jsp.

Например, мое имя хоста: http://localhost:30080

Когда вызывать этот метод с помощью for, g: response.sendRedirect ("/ home");,Он всегда перенаправляется на http://localhost/home вместо http://localhost:30080/home

Я пытался разобраться с RemoteIpValve (https://tomcat.apache.org/tomcat-6.0-doc/api/org/apache/catalina/valves/RemoteIpValve.html), но он все еще не работает.

nginx default.conf

    upstream php-upstream {
        server 127.0.0.1:9000;
    }

    upstream tomcat-upstream {
        server 127.0.0.1:8080;
    }

    server {

        listen  80 default_server;
        listen  [::]:80 default_server ipv6only=on;


        port_in_redirect off;
        proxy_connect_timeout 300;

        root /var/www;
        index index.html index.htm index.jsp index.php;

        location ~ \.php$ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Real-Port $server_port;
            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_set_header X-Forwarded-Proto $scheme;

            try_files $uri /index.php =404;
            fastcgi_pass php-upstream;
            fastcgi_index index.php;
            fastcgi_buffers 16 16k;
            fastcgi_buffer_size 32k;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            #fixes timeouts
            fastcgi_read_timeout 300;
            include fastcgi_params;
        }

        location ~ \.jsp$ {
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Real-Port $server_port;
            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_set_header X-Forwarded-Proto $scheme;

            proxy_pass http://tomcat-upstream;
        }

        location ~ /\.ht {
            deny all;
        }

        location /.well-known/acme-challenge/ {
            root /var/www/letsencrypt/;
            log_not_found off;
        }
    }

server.xml config

    <?xml version='1.0' encoding='utf-8'?>
    <Server port="8005" shutdown="SHUTDOWN">
      <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
      <Listener className="org.apache.catalina.core.JasperListener" />
      <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
      <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      <GlobalNamingResources>
        <Resource name="UserDatabase" auth="Container"
                  type="org.apache.catalina.UserDatabase"
                  description="User database that can be updated and saved"
                  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml" />
      </GlobalNamingResources>
      <Service name="Catalina">
        <Connector port="8080" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8082" />
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
        <Engine name="Catalina" defaultHost="localhost">
          <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 resourceName="UserDatabase"/>
          <Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true"
                xmlValidation="false" xmlNamespaceAware="false">
            <Valve className="org.apache.catalina.valves.RemoteIpValve" internalProxies="0\.0\.0\.0" remoteIpHeader="x-forwarded-for" proxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto"/>
          </Host>
        </Engine>
      </Service>
    </Server>

==== ОБНОВЛЕНИЕ ====

Отладка заголовка вперед по прокси nginx введите описание изображения здесь

Отладка непосредственно сработавшего заголовка введите описание изображения здесь

...