#!/bin/sh # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # Generate a minimal HTTPD configuration here=`echo "import os; print os.path.realpath('$0')" | python`; here=`dirname $here` mkdir -p $1 root=`echo "import os; print os.path.realpath('$1')" | python` host=$2 port=`$here/httpd-addr port $3` pport=`$here/httpd-addr pport $3` listen=`$here/httpd-addr listen $3` vhost=`$here/httpd-addr vhost $3` if [ "$pport" = "80" ]; then pportsuffix="" else pportsuffix=":$pport" fi mkdir -p $4 htdocs=`echo "import os; print os.path.realpath('$4')" | python` user=`id -un` group=`id -gn` uname=`uname -s` if [ $uname = "Darwin" ]; then libsuffix=".dylib" sendfile=Off else libsuffix=".so" sendfile=On fi modules_prefix=`cat $here/httpd-modules.prefix` mkdir -p $root mkdir -p $root/logs mkdir -p $root/conf cat >$root/conf/httpd.conf <s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{cookie}n\" %A %V %D %I %O %{mod_security-message}i" combined Include conf/log.conf # Configure Mime types and default charsets TypesConfig $here/conf/mime.types AddDefaultCharset utf-8 AddCharset utf-8 .html .js .css # Configure cache control ExpiresActive On ExpiresDefault A604800 Header onsuccess merge Cache-Control public env=!private-cache # Enable Linux Kernel sendfile EnableSendFile $sendfile # Configure auth modules Include conf/auth.conf # Set default document root DocumentRoot $htdocs DirectoryIndex index-min.html index.html # Protect server files Options None AllowOverride None Require all denied # Configure output filters to enable compression and rate limiting #SetOutputFilter RATE_LIMIT;DEFLATE SetOutputFilter DEFLATE BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html BrowserMatch ^check_http/ check_http SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary Header append Vary User-Agent env=!dont-vary #SetEnv rate-limit 400 # Listen on HTTP port Listen $listen # Setup HTTP virtual host ServerName http://$host$pportsuffix RewriteEngine on Include conf/hostcond.conf RewriteCond %{HTTP:X-Forwarded-Server} ^$ [NC] RewriteCond %{REQUEST_URI} !^/server-status [NC] RewriteCond %{REQUEST_URI} !^/balancer-manager [NC] RewriteCond %{REQUEST_URI} !^/proxy/ [NC] RewriteRule .* http://$host$pportsuffix%{REQUEST_URI} [R] Include conf/svhost.conf # Configure authentication Include conf/noauth.conf Include conf/locauth.conf Include conf/pubauth.conf Include conf/adminauth.conf EOF # Configure logging cat >$root/conf/log.conf <$root/conf/mpm.conf <>$root/conf/mpm.conf <$root/conf/modules.conf < LoadModule log_config_module ${modules_prefix}/modules/mod_log_config.so LoadModule logio_module ${modules_prefix}/modules/mod_logio.so LoadModule usertrack_module ${modules_prefix}/modules/mod_usertrack.so LoadModule vhost_alias_module ${modules_prefix}/modules/mod_vhost_alias.so LoadModule cgi_module ${modules_prefix}/modules/mod_cgi.so LoadModule actions_module ${modules_prefix}/modules/mod_actions.so LoadModule unixd_module ${modules_prefix}/modules/mod_unixd.so LoadModule session_module ${modules_prefix}/modules/mod_session.so LoadModule session_crypto_module ${modules_prefix}/modules/mod_session_crypto.so LoadModule slotmem_shm_module ${modules_prefix}/modules/mod_slotmem_shm.so LoadModule ratelimit_module ${modules_prefix}/modules/mod_ratelimit.so LoadModule reqtimeout_module ${modules_prefix}/modules/mod_reqtimeout.so LoadModule ssl_module ${modules_prefix}/modules/mod_ssl.so EOF # Generate auth configuration cat >$root/conf/auth.conf <$root/conf/locauth.conf < Options FollowSymLinks Require all granted # Allow authorized access to root location Options FollowSymLinks AuthUserFile "$root/conf/httpd.passwd" AuthGroupFile "$root/conf/httpd.groups" Require all granted EOF cat >$root/conf/pubauth.conf < AuthType None Require all granted # Mark login page with a header Header set X-Login open-auth AuthType None Require all granted AuthType None Require all granted AuthType None Require all granted AuthType None Require all granted AuthType None Require all granted EOF cat >$root/conf/adminauth.conf < Require user admin EOF # Create password and group files cat >$root/conf/httpd.passwd <$root/conf/httpd.groups <$root/conf/noauth.conf < AuthType None Require all granted # Allow everyone to access root location AuthType None Require all granted EOF # Generate vhost configuration cat >$root/conf/vhost.conf < SetHandler server-status HostnameLookups on EOF cat >$root/conf/svhost.conf <$root/conf/dvhost.conf <$root/conf/hostcond.conf <