Skip to content
Helge Heß edited this page Sep 26, 2024 · 11 revisions

WIP

apt-get -y -qq install \
  apache2 \
  apache2-bin \
  apache2-data \
  apache2-utils
a2enmod proxy
a2enmod proxy_http
a2enmod proxy_balancer
a2enmod lbmethod_byrequests
a2enmod headers

This can be used to validate configs etc, Apache is not running as a service in Docker!

apachectl restart

Apache runs as www-data in Ubuntu. To check access to dirs: sudo -u www-data ls /src.

Resources

OGo WebServerResources should be served by a web server :-)

The default Ubuntu Apache config is in /etc/apache2, a vhost in /etc/apache2/sites-available/000-default.conf. The port the server is running on is set in /etc/apache2/ports.conf (defaults to 80, might be better to set to sth else for Docker, e.g. 12000).

The virtual host needs:

<Directory "/src/OpenGroupware.org/Themes/WebServerResources/">
  Require all granted
</Directory>

Alias /OpenGroupware55.woa/WebServerResources/ \
      /src/OpenGroupware.org/Themes/WebServerResources/

Test: http://localhost:12000/OpenGroupware55.woa/WebServerResources/English.lproj/OGo.css

Load Balancing

WIP

    RequestHeader add x-webobjects-server-protocol http
    RequestHeader add x-webobjects-server-url  http://localhost:12000
    RequestHeader add x-webobjects-server-port 12000
    RequestHeader add x-webobjects-server-name localhost
    Header add Set-Cookie "OGOROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
    <Proxy balancer://mycluster>
        BalancerMember http://localhost:12001 route=1
        ProxySet stickysession=OGOROUTEID
    </Proxy>
    ProxyPass        /OpenGroupware       balancer://mycluster/OpenGroupware
    ProxyPassReverse /OpenGroupware       balancer://mycluster/OpenGroupware
    ProxyPass        /OpenGroupware.woa   balancer://mycluster/OpenGroupware.woa
    ProxyPassReverse /OpenGroupware.woa   balancer://mycluster/OpenGroupware.woa
    ProxyPass        /OpenGroupware55.woa balancer://mycluster/OpenGroupware55.woa
    ProxyPassReverse /OpenGroupware55.woa balancer://mycluster/OpenGroupware55.woa
    ProxyPass        /ogo-webui-5         balancer://mycluster/ogo-webui-5
    ProxyPassReverse /ogo-webui-5         balancer://mycluster/ogo-webui-5
    ProxyPass        /ogo-webui-5.woa     balancer://mycluster/ogo-webui-5.woa
    ProxyPassReverse /ogo-webui-5.woa     balancer://mycluster/ogo-webui-5.woa

mod_ngobjweb

That is an own proxy module, but it shouldn't be required anymore w/ mod_proxy/mod_balancer and the improved HTTP backend of gstep-base/SOPE.

It was setting some special "WebObjects" request headers, which might be useful to emulate in mod_proxy (via e.g. RequestHeader add x-webobjects-server-protocol https).

Headers (w/ the Apache API they used):

  • x-webobjects-server-protocol, r->protocol: http/https
  • x-webobjects-remote-addr: r->connection->remote_ip
  • x-webobjects-remote-host: r->connection->remote_host, ip as fallback
  • x-webobjects-auth-type: r->ap_auth_type
  • x-webobjects-adaptor-prefix: mod_ngobjweb configuration (appPrefix)
  • x-webobjects-server-name
  • x-webobjects-server-port: r->server->port
  • x-webobjects-server-url: ap_http_method(r), r->server->server_hostname, r->server->port
  • x-webobjects-https-enabled: apr_table_get(env, "HTTPS")
  • x-webobjects-clients-cert: apr_table_get(env, "SSL_CLIENT_CERT")
  • x-webobjects-https-keysize: apr_table_get(env, "SSL_CIPHER_USEKEYSIZE")

Module Configurations Commands

  • SetAppPort "the path of the Unix domain address to use (eg /tmp/.OGo)"
  • SetAppPrefix "any prefix that is before the app name (eg /MyDir with /MyDir/MyApp.woa)"
  • SetSNSPort (for snsd, proprietary, "the path of the Unix domain address to use (eg /tmp/.snsd)")
  • SNSUseHTTP "use HTTP protocol to query snsd (on,off)

Links

Clone this wiki locally