Ich möchte von einen Server mit dem Namen srvproxy per https weitere Webserver erreichen. Vor langer Zeit habe ich einmal eine Reverse Proxy hierfür eingerichtet, der mir die VDR-Live Webseiten (siehe: http://www.vdr-wiki.de/wiki/index.php/Live-plugin) von einem Port (auf dem selben Rechner) über Unterverzeichnis live ermöglicht. Das sah dann so aus (apache2) und funktioniert problemlos, Anfragen werden von https://srvproxy/live and den http://localhost:9090 weitergeleitet:
1 2 3 4 5 6 | RewriteEngine On RewriteRule ^/live$ /live/ [R] ProxyPass /live http://localhost:9090 ProxyPassReverse /live http://localhost:9090 |
Beim Zammad-Server habe ich das auch versucht, und bekomme mittlerweile die Ladeseite angezeigt. Allerdings scheinen noch zusätzliche Einstellungen für den Websocket erforderlich zu sein und hier komme ich nicht weiter.
Zammad läuft auf einem LXC mit Ubuntu 20.04 LTS unter nginx und ist wie folgt konfiguriert und ist unter dem Port (den ich auf 8080 geändert habe) über den Hostnamen srvzammad erreichbar:
upstream zammad-railsserver { server 127.0.0.1:3000; } upstream zammad-websocket { server 127.0.0.1:6042; } server { listen 8080; # replace 'localhost' with your fqdn if you want to use zammad from remote server_name srvzammad; # security - prevent information disclosure about server version server_tokens off; root /opt/zammad/public; access_log /var/log/nginx/zammad.access.log; error_log /var/log/nginx/zammad.error.log; client_max_body_size 50M; location ~ ^/(assets/|robots.txt|humans.txt|favicon.ico) { expires max; } location /ws { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 86400; proxy_pass http://zammad-websocket; } location / { proxy_set_header Host $http_host; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 300; proxy_pass http://zammad-railsserver; gzip on; gzip_types text/plain text/xml text/css image/svg+xml application/javascript application/x-javascript application/json application/xml; gzip_proxied any; } }
Der Zugriff via http://srvzammad:8080 funktioniert wie gewünscht. Als nächstes möchte ich über den SrvProxy über das Unterverzeichnis /zammad auf Zammad zugreifen, später auch per https, also: http(s)://srvproxy/zammad
In der /etc/apache2/site-enabled/ssl.conf vom srvproxy, habe ich deshalb folgendes eingetragen:
1 2 3 4 5 6 | RewriteCond %{HTTP:Connection} Upgrade [NC,OR] RewriteCond %{HTTP:Upgrade} websocket [NC] RewriteRule /(.*) ws://srvzammad:8080/$1 [P,QSA,L] ProxyPass /zammad http://srvzammad:8080 retry=1 ProxyPassReverse /zammad http://srvzammad:8080 |
Angezeigt wird mir aber nur das Zammad-Logo und der "Loading.."-Hinweis. Was fehlt mir hier noch?
Wenn ihr alternativ ein Beispiel für nginx habt, wäre das auch Klasse. Da habe ich folgendes probiert, aber leider auch ohne Erfolg:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | server { server_name srvproxy; location /zammad/ws { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade"; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 86400; proxy_pass http://srvzammad:8080; } location /zammad { proxy_set_header Host $http_host; proxy_set_header CLIENT_IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 300; proxy_pass http://srvzammad:8080; gzip on; gzip_types text/plain text/xml text/css image/svg+xml application/javascript application/x-javascript application/json application/xml; gzip_proxied any; } } |
Viele Grüße Max