Spring Boot Projekt mit SSL über Reverse Proxy

BlackDemo

Ensign
Registriert
Mai 2013
Beiträge
165
Hallo,

ich brauche bei der Integration eines Spring Boot Projektes in unseren Linux Server Hilfe. Das Projekt läuft einwandfrei im Server, jedoch ohne einem SSL Zertifikat, unter http://example.com/pfad. Es läuft unter dem Port 8070, welcher dank einem ReverseProxy in der Adresszeile nicht mehr sichtbar ist.

Code:
<VIRTUALHOST *:80>
   ProxyPreserveHost on
   ProxyPass /pfad/ http://example.com:8070/pfad/
</VIRTUALHOST>

Nun wurde ein SSL Zertifikat implementiert, welches auch funktioniert, jedoch lässt dich der Port aus der Adresszeile nicht verschwinden, sodass die Seite nur unter https://example.com:8070/pfad/ erreichbar ist. Die Einstellungen die ich im Linux VirtualHost eingestellt habe, lassen sich nicht nach unseren Vorstellungen funktionieren:

Code:
<VIRTUALHOST *:443>
   ProxyPreserveHost on
   ProxyPass /pfad/ https://example.com:8060/pfad/
</VIRTUALHOST>

<VirtualHost *:443>
    ProxyPass /pfad/ https://example.com:8060/pfad/
    ProxyPassReverse /pfad/ https://example:8060/pfad/
    RequestHeader set X-Forwarded-Proto https
    RequestHeader set X-Forwarded-Port 443
    ProxyPreserveHost On
</VirtualHost>
 
Was läuft denn nun unter Port 8060 und 8070? Und warum benutzt du beim ProxyPass nicht den localhost? Oder ist das noch mal ein anderer Server?
Soweit ich mich an meine letzten Apache Configs erinnere, ging die Integration mit Spring Boot kinderleicht.

Ansonsten gibt's bei Google tausende Anleitungen dafür. Z.B.
https://medium.com/@codebyamir/usin...-for-spring-boot-embedded-tomcat-f704da73e7c8
https://stackoverflow.com/questions/25455969/spring-boot-with-embedded-tomcat-behind-apache-proxy



Für Nginx hätte ich 'ne funktionierende Config da:
Code:
server {
        listen 80;
        listen [::]:80;

        server_name *.example.org;

        return 301 https://$host$request_uri;
}

server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        
        server_name mysubdomain.example.org;
        
        location @MyContext {
               proxy_pass         http://127.0.0.1:8080;
               proxy_set_header   Host             $host;
               proxy_set_header   X-Real-IP        $remote_addr;
               proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

               proxy_http_version 1.1;
               proxy_set_header Upgrade $http_upgrade;
               proxy_set_header Connection "upgrade";
       }

        location ~ "^/mypath*" {
               try_files $uri @MyContext;
        }
        
        ssl_certificate ...; # managed by Certbot
        ssl_certificate_key ...; # managed by Certbot
}
 
Zuletzt bearbeitet:
Habe meinen Fehler gefunden.

Statt so:
Code:
<VirtualHost *:443>
    ProxyPass /pfad/ https://example.com:8060/pfad/
    ProxyPassReverse /pfad/ https://example:8060/pfad/
    RequestHeader set X-Forwarded-Proto https
    RequestHeader set X-Forwarded-Port 443
    ProxyPreserveHost On
</VirtualHost>

War es so:
Code:
SSLProxyEngine on
ProxyPreserveHost On
ProxyPass /pfad/ https://example.com:8060/pfad/
ProxyPassReverse /pfad/ https://example:8060/pfad/
RequestHeader set X-Forwarded-Proto https
RequestHeader set X-Forwarded-Port 443

Kopfschmerzen endlich zuende :)
 
Zurück
Oben