Apache als Reverse Proxy für DotNet Applikation (War: DotNet Applikation unter Apache)
Hallo,
On Wed, Apr 01, 2020 at 11:21:42PM +0200, Ulf Volmer wrote:
> On 01.04.20 09:31, Andreas Tille wrote:
>
> > ich habe die Aufgabe, eine existierende dotNet 3.1 Applikation unter
> > Debian mit Apache als Proxy zum Laufen zu bringen. Ich bin anhand der
> > unten aufgelisteten [Links] vorgegangen. Damit läuft die dotNet
> > Applikation erstmal im Browser auf http://localhost:5000 .
Also das Problem ist gelöst - der Dienst läuft jetzt auf
http://localhost:5000
> > Allerdings
> > wird nur der rohe Inhalt der Webseite dargestellt - Bilder auf die mit
> > /img/* verwiesen wird sowie CSS (in /css) werden nicht gefunden.
>
> Falls es eine valide Lösung sein sollte, den Apache die zwei
> Verzeichnisse direkt ausliefern zu lassen, statt die an den kestrel
> weiterzuleiten:
>
> ProxyPass /css !
> ProxyPass /img !
>
> sorgt für eben das.
Es war ein anderes Problem (Verzeichnis am falschen Ort).
> Sonst bin ich raus. ;-)
Vielleicht bist Du bei einer eher reinen Apache-Frage wieder drin. :-)
Der Dienst unter http://localhost:5000 ist ja eigentlich der reine
dotNet Webservice. Da schlägt ja Apache gar nicht zu. Meine
/etc/apache2/conf.d/10-dotnet.conf sieht so aus:
# Setup apache2 as reverse proxy
# https://docs.microsoft.com/de-de/aspnet/core/host-and-deploy/linux-apache?view=aspnetcore-3.1
# Alternative:
# https://blog.todotnet.com/2017/07/publishing-and-running-your-asp-net-core-project-on-linux/
Listen 4242
<VirtualHost *:*>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
</VirtualHost>
<VirtualHost *:4242>
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:5000/
ProxyPassReverse / http://127.0.0.1:5000/
ServerName host.my.local
ServerAlias *.my.local
ErrorLog ${APACHE_LOG_DIR}/dotnet-error.log
CustomLog ${APACHE_LOG_DIR}/dotnet-access.log common
</VirtualHost>
In der Anleitung steht original
<VirtualHost *:80>
drin. Aber auf Port 80 will ich den Standardserver antworten lassen.
Daher habe ich nun mal einen neuen Port 4242 erfunden. Der wird auch
aufgemacht:
# netstat -tuplen | grep -e dotnet -e apache
tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 33 21791594 8173/dotnet
tcp 0 0 127.0.0.1:5001 0.0.0.0:* LISTEN 33 21791598 8173/dotnet
tcp6 0 0 :::80 :::* LISTEN 0 21944936 25352/apache2
tcp6 0 0 :::4242 :::* LISTEN 0 21944940 25352/apache2
tcp6 0 0 ::1:5000 :::* LISTEN 33 21791597 8173/dotnet
tcp6 0 0 ::1:5001 :::* LISTEN 33 21791599 8173/dotnet
Wenn ich nun zu http://localhost:4242 gehe, dann zeigt der Browser
sofort
http://localhost:5000
an und macht mit der (nun glücklicherweise laufenden) dotnet Anwendung
weiter und der Apache ist draußen. Im log erscheint auch nur der eine
Zugriff. Ich vermute, das hängt mit einem falschen Reverse-Proxy
zusammen - aber was genau ist da noch zu ändern?
Viele Grüße
Andreas.
--
http://fam-tille.de
Reply to: