[gelöst] GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

[gelöst] GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Beitrag von joe2017 » 04.01.2019 10:01:23

Schönen Guten Morgen.

Ich habe von unserer Softwareentwicklung eine kleine Aufgabe bekommen an der ich etwas hänge. Vielleicht sieht jemand von euch mein Problem.
Prinzipiell geht es darum, dass diverse GoLang WebApps auf einem Debian Server gestartet werden sollen. Da ich nicht für jede einzelne WebApp eine IP Adresse habe, soll ich diese über einen Apache Proxy lösen.
Somit sollte jede WebApp über eine einzige IP Adresse erreichbar sein. Da jede WebApp über einen eindeutigen Port gestartet werden muss, muss im Apache eingestellt werden, dass ein bestimtes Verzeichnis über einen bestimten Port erreichbar ist.

Ich möchte somit einfach folgendes aufrufen:
http://ApacheServer.domain.com/myapp1 (diese ist über den Port 8080 erreichbar)
http://ApacheServer.domain.com/myapp2 (diese ist über den Port 8081 erreichbar)


Anbei meine Konfiguration.
  • sudo apt install -y apache2
  • sudo a2enmod proxy proxy_http
  • sudo systemctl restart apache2

sudo nano /etc/apache2/sites-available/000-default.conf

Code: Alles auswählen

<VirtualHost *:80>
        ServerName ApacheServer.domain.com
        #ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        ProxyPass /myapp1/ http://ApacheServer.domain.com:8080/
        ProxyPassReverse /myapp1/ http://ApacheServer.domain.com:8080/
        
	ProxyPass /myapp2/ http://ApacheServer.domain.com:8081/
        ProxyPassReverse /myapp2/ http://ApacheServer.domain.com:8081/
</VirtualHost>
Für die WebApp gibt es auch noch eine Config:

Code: Alles auswählen

{
        "Server": {
                "Host": "ApacheServer.domain.com",
                "PortHttp": 8080,
                "PortHttps": 443,
                "UseHttps": false,
                "CertFile": "D:/certificate/cert.pem",
                "KeyFile": "D:/certificate/key.pem",
                "UseAuth": false
        },
        "Controller": {
                "UseCache" : false
        },
        "Model": {
                "CycleInterval": 5000,
                "UpdateInterval": 600000,
                "FilterImage": "ANI BMP CAL EPS FAX GIF IMG JBG JPE JPEG JPG MAC PBM PCD PCX PCT PG$
                "FilterVideo": "MP4"
        },
        "View": {
                "Template" : {
                        "Path": "template",
                        "DefaultPath": "default",
                        "BaseName": "base",
                        "Extension": "html",
                        "Include": [
                                "content"
                        ]
                }
        },
        "Environment": {
                "ContextUrl": "/myapp1",
                "UseLogger": false,
                "Path" : {
                        "static": "/var/www/html/myapp1/",
                        "template": "/var/www/html/myapp1/",
                        "logging": "/var/www/html/myapp1/",
                        "image": "/var/www/html/myapp1/images/"
                }
        }
}
Anschließend starte ich einfach meine App mit /var/www/html/myapp1/app

Die Seite ist jedoch nur über folgenden Link erreichbar http://ApacheServer.domain.com:8080/myapp1
Nicht über: http://ApacheServer.domain.com/myapp1

Was mache ich hier falsch?
Zuletzt geändert von joe2017 am 04.01.2019 11:58:26, insgesamt 1-mal geändert.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Beitrag von joe2017 » 04.01.2019 10:20:09

Noch ein kleiner Zusatz. Ich habe mich vielleicht etwas missverständlich ausgedrückt. Ich möchte nicht die einzelnen Ports (8080,8081,usw) öffnen. Sondern lediglich den Port 80 (später 443) und mein Apache muss ein Redirect auf die entsprechende WebApp durchführen.

Wenn ich z.B. http://ApacheServer.com/myapp1 eingebe, muss mein Apache intern ein Redirect auf http://ApacheServer.com:8080 durchführen.
Geöffnet ist jedoch nur der Port 80 bzw. 443

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Beitrag von hec_tech » 04.01.2019 10:24:30

Was kommt für eine Fehlermeldung bzw was steht in den Log Files?

Ich persönlich mag Apache als Rev Proxy nicht da nehme ich eigentlich immer Nginx. Das ist aber Geschmackssache.

Edit:
Moment mal du hast die WebApp im gleichen Verzeichnis liegen wie Apache2 - das sollte man nicht machen und ich glaube das führt auch zu Problemen

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Beitrag von joe2017 » 04.01.2019 10:33:17

Was sollte das Verzeichnis für ein Problem darstellen? In allen Beispielen welche ich hierzu finden konnte wurde immer das Standard Verzeichnis verwendet.

Ich verwende den Apache da ich so oder so einen Webserver für weitere interne Webseiten benötige. Da bietet es sich einfach an, den vorhandenen Apache einzusetzten. Zusätzlich war dies eine Vorgabe.

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Beitrag von hec_tech » 04.01.2019 11:08:59

Naja Root --> /var/www/html/

Dann willst du zugreifen auf /var/www/html/myapp1/ allerdings nicht über Apache selbst sondern über Apache als Rev Proxy.

Das kann zu Nebeneffekten führen.

Nimm mal DocumentRoot raus und schau ob es dann funktioniert.

Was für eine Fehlermeldung bekommst du?

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Beitrag von joe2017 » 04.01.2019 11:21:41

http://ApacheServer.domain.com/myapp1

Mit folgender Config bekomme ich die Fehlermeldung (404 page not found)

Code: Alles auswählen

<VirtualHost *:80>
        ServerName ApacheServer.domain.com
        #ServerAdmin webmaster@localhost
        #DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        ProxyPass /myapp1/ http://ApacheServer.domain.com:8080/
        ProxyPassReverse /myapp1/ http://ApacheServer.domain.com:8080/

        ProxyPass /myapp2/ http://ApacheServer.domain.com:8081/
        ProxyPassReverse /myapp2/ http://ApacheServer.domain.com:8081/
</VirtualHost>
Wenn meine WebApp nicht gestartet ist erhalte ich die Meldung:
Service Unavailable

Benutzeravatar
heisenberg
Beiträge: 3526
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Beitrag von heisenberg » 04.01.2019 11:30:53

Ich persönlich mag Apache als Rev Proxy nicht da nehme ich eigentlich immer Nginx. Das ist aber Geschmackssache.
yup. ist irgendwie stressfreier.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Beitrag von hec_tech » 04.01.2019 11:52:21

Kommt der 404 vom Backend oder Frontend - ich vermute mal Backend.

Ok ich glaube ich sehe den Fehler:

Änder das mal auf diese Zeilen - die Context Base ist unterschiedlich:

ProxyPass /myapp1/ http://ApacheServer.domain.com:8080/myapp1/
ProxyPassReverse /myapp1/ http://ApacheServer.domain.com:8080/myapp1/

ProxyPass /myapp2/ http://ApacheServer.domain.com:8081/myapp2/
ProxyPassReverse /myapp2/ http://ApacheServer.domain.com:8081/myapp2/
Zuletzt geändert von hec_tech am 04.01.2019 11:58:46, insgesamt 1-mal geändert.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

Re: GoLang WebApps mit Apache Proxy über getrennte Ports erreichbar machen

Beitrag von joe2017 » 04.01.2019 11:57:28

Hab es jetzt hinbekommen. War wohl ein Fehler in der Config.

Anbei meine funktionierende Config:

Code: Alles auswählen

<VirtualHost *:80>
        ServerName ApacheServer.domain.com
        #ServerAdmin webmaster@localhost
        #DocumentRoot /var/www/html

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        ProxyPass /myapp1 http://127.0.0.1:8080/myapp1
        ProxyPassReverse /myapp1 http://127.0.0.1:8080/myapp1

        ProxyPass /myapp2 http://ApacheServer.domain.com:8081/myapp2
        ProxyPassReverse /myapp2 http://ApacheServer.domain.com:8081/myapp2
</VirtualHost>

Antworten