Ausgehende Anfragen (z.B. Webhooks, HTTP-Aufrufe) ins Internet müssen über einen Proxyserver gehen.
Das betrifft nicht die Response eines Request ⇄ Response Zyklus.
Host: http-proxy.niedersachsen.de
Port: 8080
Die folgende Konfiguration
Beispielaufruf einer .jar
Datei mit Proxy:
java \
-Dhttp.proxyHost="http-proxy.niedersachsen.de" -Dhttp.proxyPort=8080 \
-Dhttps.proxyHost="http-proxy.niedersachsen.de" -Dhttps.proxyPort=8080 \
-Dhttp.nonProxyHosts="localhost|127.*|[::1]|172.20.0.0/16" \
-jar myjar.jar
Der Wert für http.nonProxyHosts
oben ist der Default. Man könnte den hier also weglassen. Alle ausgehenden Aufrufe gehen dann über den Proxy.
- Konfigurationklasse: WebClientProxyConfiguration.java
- Customizer der die Konfiguration auf den WebClient anwendet: WebClientProxyCustomizer.java
- Deklariert das Bean WebClient: WebClientConfiguration.java.
- Zur Verwendung dann ein Bean vom Typ
WebClient
oder per NameproxyWebClient
autowiren.
- https://www.baeldung.com/java-resttemplate-proxy#using-resttemplatecustomizer
- https://docs.spring.io/spring-boot/docs/current/reference/html/howto.html#howto.http-clients.rest-template-proxy-configuration
Die Proxyeinstellungen betreffen natürlich auch Aufrufe zwischen Docker Containern.
Möchte man das nicht (i.d.R. möchte man das nicht), so muss der Parameter (hier: JVM) http.nonProxyHosts
befüllt werden.
Hier kann man explizit die DNS-Namen der anderen Docker Container angeben oder alternativ auch das Subnetz:
$ docker network create foo
a26423790bd1cb8880602abd8be6e33a83d90138609970efb2997347380ba127
$ docker network inspect foo | jq -r '.[0].IPAM.Config[0].Subnet'
172.20.0.0/16
Die Konfiguration lautet dann -DnonProxyHosts="localhost|127.*|[::1]|172.20.0.0/16"
.