[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: