n things you didn’t know you could do with apache tek11 ...drbacchus.com/files/20_things.pdf · n...

155
/ N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen [email protected] N=29 Thursday, May 26, 2011

Upload: others

Post on 21-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

/

N Things You Didn’t Know You Could Do With Apache

Tek11, 2011, Chicago

Rich [email protected]

N=29Thursday, May 26, 2011

Page 2: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

1FallbackResource (2.2.12 and later)

Thursday, May 26, 2011

Page 3: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

The old way

RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} \ (alias1|alias2|special|other) [NC]RewriteRule . index.php [PT]

Thursday, May 26, 2011

Page 4: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

2.2 and later

• Adds a Fallback in the case that there’s no suitably named file

• Like ErrorDocument, except it’s not an error

Thursday, May 26, 2011

Page 5: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Long, long ago ...

• Anything that doesn’t match a file or directory

• or a list of special URIs that we want to protect

• send to the “front controller” or “handler”

RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} \ (alias1|alias2|special|other) [NC]RewriteRule . index.php [PT]

Thursday, May 26, 2011

Page 6: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

However

• Slow

• Fragile

• Can break relative links, embedded files, etc

Thursday, May 26, 2011

Page 7: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

In the future ... uture ... uture

• Server administrators will just put one line in the global config

• Nobody will need to touch .htaccess files

FallbackResource /index.php

Thursday, May 26, 2011

Page 8: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Where useful

• Practically every web app uses this technique

• Wordpress

• Drupal

• Joomla

• Habari

• etc ...

Thursday, May 26, 2011

Page 9: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

2server-info?config

Thursday, May 26, 2011

Page 10: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

server-info?config

Thursday, May 26, 2011

Page 11: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

What’s in there?

• All your configuration settings

•What file they live in

•What order they are applied

Thursday, May 26, 2011

Page 12: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Also ...

• Other available arguments ...

Thursday, May 26, 2011

Page 13: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

/server-info?list

Thursday, May 26, 2011

Page 14: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

/server-info?mod_log_config.c

Thursday, May 26, 2011

Page 15: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

... and

• ?hooks - lists hooks and which modules are attached to them

• ?server - Same as httpd -V

Thursday, May 26, 2011

Page 16: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

3SNI

Thursday, May 26, 2011

Page 17: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Common Wisdom

• You can't run name-based virtual hosts with SSL

• One SSL host per IP address

• Certificate is sent to the client *before* the client sends the HOST: header

Thursday, May 26, 2011

Page 18: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

SNI

• Server Name Indication

• ServerName and Certificate figured out prior to encryption

Thursday, May 26, 2011

Page 19: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Listen 443NameVirtualHost *:443

SSLStrictSNIVHostCheck off

<VirtualHost *:443> DocumentRoot /www/example1 ServerName www.example.com</VirtualHost>

<VirtualHost *:443> DocumentRoot /www/example2 ServerName www.example2.org</VirtualHost>

Thursday, May 26, 2011

Page 20: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

<VirtualHost *:443> DocumentRoot /www/example2 ServerName www.example2.org

SSLCertificateFile /path/to/www.domain.com.cert SSLCertificateKeyFile /path/to/www.domain.com.key

</VirtualHost>

Thursday, May 26, 2011

Page 21: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Browser Support

• Mozilla Firefox 2.0 or later

• Opera 8.0 or later (with TLS 1.1 enabled)

• Internet Explorer 7.0 or later (on Vista, not XP)

• Google Chrome

• Safari 3.2.1 on Mac OS X 10.5.6

Thursday, May 26, 2011

Page 22: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Docs

• Best docs for this are in the wiki. Should be in the official docs soon

• http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Thursday, May 26, 2011

Page 23: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

4Per-module LogLevel configuration (2.4)

Thursday, May 26, 2011

Page 24: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

LogLevel debug (2.2 and earlier)

•mod_proxy is noisy

•Everything else lost in the noise

LogLevel Debug

Thursday, May 26, 2011

Page 25: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

LogLevel (2.3.6 and later)

LogLevel warn ssl:debug

Default Just this module

Thursday, May 26, 2011

Page 26: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Trace

• Some modules have detailed trace information

• Replaces RewriteRule

2.2

2.4

RewriteLog /var/log/rewrite.logRewriteLogLevel 5

LogLevel warn rewrite:trace5

Thursday, May 26, 2011

Page 27: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Log files

• Everything goes to the error log

• Think "debug log" instead

• Use grep to separate:

tail -f /www/logs/error_log | grep ‘rewrite:’

Thursday, May 26, 2011

Page 28: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Error logs

• And error log formats are now configurable, too

• ErrorLogFormat much like LogFormat, with similar sprintf-like variables

• Most excitingly, %L is the log entry ID, and can be placed in the access log and error log, to correlate entries

Thursday, May 26, 2011

Page 29: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

5Expression evaluation (2.4)

Thursday, May 26, 2011

Page 30: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Various syntaxes

•mod_rewrite, Directory, *Match, etc, various different syntaxes

• util_expr provides a consistent expression syntax

Thursday, May 26, 2011

Page 31: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Examples

• <If> (See slides later)

• SetEnvIfExpr

• Regular expressions, backreferences, environment variable tests

Thursday, May 26, 2011

Page 32: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Documentation

• Documentation is lacking. I hope to fix this in the coming weeks.

• Just a few modules use this syntax. This is expected to expand.

Thursday, May 26, 2011

Page 33: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

6IndexStyleSheet

Thursday, May 26, 2011

Page 34: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Thursday, May 26, 2011

Page 35: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

IndexStyleSheet

IndexStyleSheet “/css/style.css”

Thursday, May 26, 2011

Page 36: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Thursday, May 26, 2011

Page 38: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Now with extra class

Thursday, May 26, 2011

Page 39: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

And ...

• With HeaderName and ReadmeName, wrap all that content in whatever shell you want.

HeaderName /style/header.htmlReadmeName /style/footer.htmlIndexStyleSheet /style/style.css

IndexOptions FancyIndexing \ SuppressHTMLPreamble \ SuppressLastModified

Thursday, May 26, 2011

Page 40: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

7Proxy Balancer

Thursday, May 26, 2011

Page 41: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_proxy_balancer

• One front end server running mod_proxy and mod_proxy_balancer

• Multiple backend servers running HTTP, FTP, or AJP protocol servers

Thursday, May 26, 2011

Page 42: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Not that it’s related ...

Thursday, May 26, 2011

Page 43: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

He’s dead, Jim

• Does heartbeat, so that dead servers are removed

• Weighted traffic distribution

• Does sticky sessions (so that an established session always goes back to the same server)

Thursday, May 26, 2011

Page 44: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_proxy_ajp

• Replaces mod_jk and all the other ajp protocol proxy servers

Thursday, May 26, 2011

Page 45: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Balancer manager

• Relies on mod_proxy

• Gives a webby management interface for the proxy balancer

<Location /balancer-manager>SetHandler balancer-manager

</Location>

Thursday, May 26, 2011

Page 46: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Thursday, May 26, 2011

Page 47: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Example 1

<Proxy balancer://mycluster>BalancerMember http://1.2.3.4:8009 loadfactor=1BalancerMember http://1.2.3.5:8009 loadfactor=1# Less powerful server, don't send as many requests thereBalancerMember http://1.2.3.6:8009 loadfactor=5

</Proxy>

ProxyPass / balancer://mycluster/

Thursday, May 26, 2011

Page 48: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Example 2

<Proxy balancer://hotcluster>BalancerMember http://1.2.3.4:8009 loadfactor=1BalancerMember http://1.2.3.5:8009 loadfactor=2# The below is the hot standbyBalancerMember http://1.2.3.6:8009 status=+HProxySet lbmethod=bytraffic

</Proxy>

ProxyPass / balancer://hotcluster/

Thursday, May 26, 2011

Page 49: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Loadbalancer parameters

• Many loadbalancer parameter options

• See mod_proxy documentation for the full list

Thursday, May 26, 2011

Page 50: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

8<If> (2.4)

Thursday, May 26, 2011

Page 51: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

New in 2.4

• Wrap anything in a conditional block

• Evaluated at request time - performance implications

Thursday, May 26, 2011

Page 52: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

<If ...>

<If $req{Host} = ‘example.com’>Redirect / http://www.example.com/

</If>

Replaces Rewrite-based “canonical hostname” rules

Thursday, May 26, 2011

Page 53: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Variables

$req$resp$env

Thursday, May 26, 2011

Page 54: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

IN

<If %{REQUEST_METHOD} IN GET,HEAD,OPTIONS>

Thursday, May 26, 2011

Page 55: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

9svn auto-commit

Thursday, May 26, 2011

Page 56: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Ever wish life had an undo button?

Thursday, May 26, 2011

Page 57: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Revision control everything!

<Location /dav> DAV svn SvnPath /path/to/svn/repos SVNAutoversioning On</Location>

Thursday, May 26, 2011

Page 58: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

R.C. for everyone

• Your users just mount this like a regular DAV share

• All file modifications generate an SVN commit

• Can always roll back to a previous version

Thursday, May 26, 2011

Page 59: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Caveats

•MANY times more drive space required

• No commit messages

• Diffs not possible on binary files (usually)

• Can revert by date/time if you know it

Thursday, May 26, 2011

Page 60: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

10ext_filter

Thursday, May 26, 2011

Page 61: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

ExtFilterDefine

ExtFilterDefine fixtext mode=output \intype=text/html \cmd="/bin/sed s/verdana/arial/g"

<Location />SetOutputFilter fixtext

</Location>

Thursday, May 26, 2011

Page 62: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Silly

• Yes, it’s a somewhat silly example

• And very slow

• But good for rapid prototyping and quick fixes

Thursday, May 26, 2011

Page 63: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Ok, better example

ExtFilterDefine c-to-html mode=output \intype=text/c outtype=text/html \cmd="/usr/bin/enscript --color -W html -Ec -o - -"

<Directory "/www/htdocs/c">SetOutputFilter c-to-htmlAddType text/c .c

# Extra loggingExtFilterOptions DebugLevel=1

</Directory>

Thursday, May 26, 2011

Page 64: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Enscript

•Pretty-prints C source code

•Color syntax coding

•Declines to process files that aren’t “text/c”

Thursday, May 26, 2011

Page 65: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

11PHP Source Syntax Pretty Printing

Thursday, May 26, 2011

Page 66: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

.phps

• PHP provides a syntax highlighting handler

AddHandler application/x-httpd-php-source .phps

Thursday, May 26, 2011

Page 67: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

phps

Thursday, May 26, 2011

Page 68: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

*.phps

• With mod_rewrite

• Or, for Apache 2.0 and earlier ...

RewriteRule ^(.+\.php)s$ \ $1 [H=application/x-httpd-php-source]

RewriteRule ^(.+\.php)s$ \ $1 [T=application/x-httpd-php-source]

Thursday, May 26, 2011

Page 69: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

12mod_substitute

Thursday, May 26, 2011

Page 70: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Edit content

• mod_rewrite edits URLs

• mod_substitute modifies content

Thursday, May 26, 2011

Page 71: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Substitute (2.2.7 and later)

Substitute s/ariel/helvetica/inSubstitute s/\bdamn\b/darn/i

Full PCRE syntax available

Flickr: abulic_monkey

Thursday, May 26, 2011

Page 72: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

More usefully ...

Substitute s/localhost/www.example.com/i

Thursday, May 26, 2011

Page 73: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

13Require, <RequireAll>, <RequireNone>, <RequireAny>

(2.4)Thursday, May 26, 2011

Page 74: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

2.3

• New syntax for combining multiple access control requirements

Thursday, May 26, 2011

Page 75: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

<RequireAny>  Require method GET POST OPTIONS  Require valid-user</RequireAny>

Thursday, May 26, 2011

Page 76: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Require expr \ %{TIME_HOUR} >= 9 & %{TIME_HOUR} <= 17

Thursday, May 26, 2011

Page 77: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in<Directory /docroot> Require env let_me_in</Directory>

Thursday, May 26, 2011

Page 78: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

<Directory /www/mydocs> <RequireAll>

<RequireAny> Require user superadmin<RequireAll>

Require group adminsRequire ldap-group cn=Administrators,o=Airius<RequireAny>

Require group salesRequire ldap-attribute dept="sales"

</RequireAny> </RequireAll>

</RequireAny><RequireNone>

Require group tempsRequire ldap-group cn=Temporary Employees,o=Airius

</RequireNone> </RequireAll>

</Directory>

Thursday, May 26, 2011

Page 79: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

# Used to be "allow from all"Require all granted

# Used to be "deny from all"Require all denied

Thursday, May 26, 2011

Page 80: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

14CheckSpelling

Thursday, May 26, 2011

Page 81: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

CheckSpelling

CheckSpelling On

CheckCaseOnly On

Thursday, May 26, 2011

Page 82: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Good for ...

•Windows users

• Simple typos

• Stupid people who just can’t get stuff right on brochures

Thursday, May 26, 2011

Page 83: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Bad for ...

• Performance

• Every 404 results in a directory scan to see if something was missed

Thursday, May 26, 2011

Page 84: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_speling

•Yes, mod_speling

•See, it’s misspelled. Funny, hmm?

•No, I didn’t think so either

Thursday, May 26, 2011

Page 85: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

15Caching

Thursday, May 26, 2011

Page 86: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Sort-of-dynamic

• Your blog that you update once every three months

• The front page of your corporate site with database-driven press releases

Thursday, May 26, 2011

Page 87: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Caching dynamic content

CacheEnable disk / CacheRoot /var/www/cacheCacheDefaultExpire 3600# Only in 2.3+CacheMinExpire 3600

# Or, in 2.2-CacheIgnoreCacheControl OnCacheDefaultExpire 600

Thursday, May 26, 2011

Page 88: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Caching

•CacheDir needs to be writeable by the Apache user

•Also great for proxying content from a back-end server

•Can also cache to memory, if you have a lot of RAM

Thursday, May 26, 2011

Page 89: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Even if I say not to ...

CacheIgnoreCacheControl OnCacheStoreNoStore OnCacheStorePrivate On

Resources requiring authentication are NEVER cached!

Thursday, May 26, 2011

Page 90: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Don’t Cache That

CacheIgnoreHeaders Set-Cookie

CacheDisable /images

Thursday, May 26, 2011

Page 91: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

16mod_deflate

Thursday, May 26, 2011

Page 92: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Deflate

AddOutputFilterByType DEFLATE \text/html text/plain text/xml

Thursday, May 26, 2011

Page 93: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Compressed

• All content gzipped on the way out to the client

• Browsers decompress it as it arrives

• 2-3 times performance improvement

• Can log compression percentage. See docs.

Thursday, May 26, 2011

Page 94: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Logging

DeflateFilterNote Input instreamDeflateFilterNote Output outstreamDeflateFilterNote Ratio ratio

LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflateCustomLog logs/deflate_log deflate

Thursday, May 26, 2011

Page 95: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Caveats

•Works best for sites that are text-heavy

• Don’t try to deflate non-textual data. IE gets angry.

• You can cache the output, but probably don’t want to

Thursday, May 26, 2011

Page 96: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

17syslog

Thursday, May 26, 2011

Page 97: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Syslog

ErrorLog syslog:local1

local1.* @sysloghost:601

Thursday, May 26, 2011

Page 98: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Syslog

• Many servers logging to one location

• Log critical errors to somewhere you can’t miss

local1.crit /var/log/panic

Thursday, May 26, 2011

Page 99: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Access log

• Sending the access log to syslog is harder

• Can be done with a piped log handler

• mod_log_spread might be a better way to handle this

Thursday, May 26, 2011

Page 100: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Syslog

CustomLog "|/usr/bin/tee -a /var/log/www/access.log | /usr/bin/logger -thttpd -plocal6.notice" combined

For the access log, use a pipe to `logger`

Thursday, May 26, 2011

Page 101: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

18WebDAV

Thursday, May 26, 2011

Page 102: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

WebDav

• FTP is insecure

• SCP or SFTP is too complicated for your manager

• Maybe DAV is the right solution

Thursday, May 26, 2011

Page 103: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

DavLock /var/dav/davlock <Directory /www/upload> Dav On </Directory>

Thursday, May 26, 2011

Page 104: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Mount from any OS

•Dav on Windows tends to be harder

•Mac, Linux mount them the same as any other file system

Thursday, May 26, 2011

Page 105: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

19Debug log modules

Thursday, May 26, 2011

Page 106: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

• Sometimes, the error log just doesn’t contain enough detail

Thursday, May 26, 2011

Page 107: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_dumpio

DumpIOInput OnDumpIOOutput On

Thursday, May 26, 2011

Page 108: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

BIG log

Thursday, May 26, 2011

Page 109: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_log_forensic

• Logs the beginning and end of a request

• check-forensic script complains if a particular request wasn’t created

• Logs the details of the request

• Relies on unique_id in 2.0, and can use it in 2.2 if you want

Thursday, May 26, 2011

Page 110: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

20mod_logio

Thursday, May 26, 2011

Page 111: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Normal logging

• 42729 is the bytes downloaded, NOT including headers, and does NOT include the request.

• Total transaction size is more than this

129.101.54.111 - - [13/Sep/2006:19:45:35 -0400] "GET /images/Kenya_world_map.jpg HTTP/1.0" 200 42739

Thursday, May 26, 2011

Page 112: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_logio

• %I is total input

• %O is total output

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

Thursday, May 26, 2011

Page 113: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

21PATH_INFO

Thursday, May 26, 2011

Page 115: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Granny says ...

• The most important thing about mod_rewrite magic is knowing when not to use it.

(With apologies to Terry Pratchett)

Thursday, May 26, 2011

Page 116: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

“Pretty” URLs

• mod_rewrite frequently used to rewrite query strings into path information:

RewriteEngine OnRewriteRule ^/book/([^/]+)/([^/]+)/? \ /book.php?author=$1&topic=$2 [PT,L]

Thursday, May 26, 2011

Page 117: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Which gives you

... instead of ...

http://www.foo.com/book/bowen/apache

http://www.foo.com/book.php?author=bowen&topic=apache

Thursday, May 26, 2011

Page 118: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Bad news

• This doesn’t actually result in higher search engine ranking

• It does, however, make it easier to read the URL over the phone

Thursday, May 26, 2011

Page 119: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Using PATH_INFO instead

• Remove the unnecessary additional processing

• Faster

• Much shinier

• You get to be smug with people who do it the old-and-crufty way

Thursday, May 26, 2011

Page 120: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Step One

• ‘book’ needs to be a php file

• Without the .php file extension

<Files book> SetHandler application/x-httpd-php</Files>

Thursday, May 26, 2011

Page 121: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Step Two

<?php

list($zero, $one, $two) = explode(“/”, $_SERVER[‘PATH_INFO’]);

?>

Thursday, May 26, 2011

Page 122: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Switch

$args = split(‘/’, $_SERVER[‘PATH_INFO’];switch( $args[1] ) {

case ‘foo’ : // stuff herebreak;

case ‘bar’ : // stuff herebreak;

default : // Other stuffbreak;

}

Thursday, May 26, 2011

Page 123: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

22graceful-stop

Thursday, May 26, 2011

Page 124: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

graceful-stop

• 2.2

• Stop the server, but allow connections to complete what they are doing

apachectl graceful-stop

Thursday, May 26, 2011

Page 125: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

23authn_alias

Thursday, May 26, 2011

Page 126: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_authn_alias

• Allows you to create aliases of various auth sources, so that you can check multiple sources of the same type

Thursday, May 26, 2011

Page 127: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

LoadModule authn_alias_module modules/mod_authn_alias.so

<AuthnProviderAlias ldap ldap-alias1>AuthLDAPBindDN cn=youruser,o=ctxAuthLDAPBindPassword yourpasswordAuthLDAPURL ldap://ldap.host/o=ctx

</AuthnProviderAlias>

<AuthnProviderAlias ldap ldap-other-alias>AuthLDAPBindDN cn=yourotheruser,o=devAuthLDAPBindPassword yourotherpasswordAuthLDAPURL ldap://other.ldap.host/o=dev?cn

</AuthnProviderAlias>

Alias /secure /webpages/secure<Directory /webpages/secure>

Order deny,allowAllow from all

AuthBasicProvider ldap-other-alias ldap-alias1AuthType BasicAuthName LDAP_Protected_PlaceAuthzLDAPAuthoritative offrequire valid-user

</Directory>

Thursday, May 26, 2011

Page 128: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Or ...

<AuthnProviderAlias file file1> AuthUserFile /tmp/user1</AuthnProviderAlias>

<AuthnProviderAlias file file2> AuthUserFile /tmp/user2</AuthnProviderAlias>

<Location /x> AuthType Basic AuthBasicProvider file1 file2 AuthName "Wooga"

Require valid-user</Location>

Thursday, May 26, 2011

Page 129: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

24Protocol modules

Thursday, May 26, 2011

Page 130: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_pop3

• That’s right! It’s a pop3 server!

• http://svn.apache.org/viewcvs.cgi/httpd/mod_pop3/

Thursday, May 26, 2011

Page 131: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

See also ...

• mod_echo

• mod_smtpd

• mod_spamd

• mod_ftpd

Thursday, May 26, 2011

Page 132: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Protocol modules

• Apache httpd is a generic protocol server

• Protocol modules can be any protocol

Thursday, May 26, 2011

Page 133: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Why?

• Common configuration format

• Common authentication architecture

• Common rewriting/mapping capabilities

Thursday, May 26, 2011

Page 134: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

25Event mpm

Thursday, May 26, 2011

Page 135: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

2.2

• Solves the Keepalive problem

Thursday, May 26, 2011

Page 136: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

What Keepalive problem?

Thursday, May 26, 2011

Page 137: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

With event ...

Thursday, May 26, 2011

Page 138: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

How?

• Keepalive sockets are shoved into a queue

• The child/thread can immediately answer the next request

Thursday, May 26, 2011

Page 139: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

26mod_dbd

Thursday, May 26, 2011

Page 140: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_dbd

•Manages database connection pooling

•Not actually much use by itself

•Great for other modules that need to talk to databases

• Such as ...

Thursday, May 26, 2011

Page 141: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

mod_authn_dbd

• Auth against any SQL database

• Well, “any” might be a little too optimistic

Thursday, May 26, 2011

Page 142: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

DBDriver pgsql

#Connection string: database name and login credentialsDBDParams "dbname=htpasswd user=apache password=xxxxxx"

#Parameters for Connection Pool ManagementDBDMin 1DBDKeep 2DBDMax 10DBDExptime 60

<Directory /usr/www/myhost/private> AuthType Basic AuthName "My Server" AuthBasicProvider dbd Require valid-user AuthDBDUserPWQuery "select password from authn where username = %s"</Directory>

Thursday, May 26, 2011

Page 143: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

dbd RewriteMap rules

RewriteMap myquery "fastdbd:SELECT destination FROM rewrite WHERE source = %s"

RewriteRule (.*) ${myquery:$1} [PT]

Thursday, May 26, 2011

Page 144: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

27mod_negotiation

Thursday, May 26, 2011

Page 145: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

File extensions are *so* Windows 3.1

• http://www.example.com/index is much cooler than http://www.example.com/index.php

• And lets you change to .html or .cfm later on without changing your URLs

Thursday, May 26, 2011

Page 146: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

It’s a feature

• A request for the resource called index is served by the variant called index.php

• index.php.en and index.php.fr are also variants of this resource

• Accept-Language (in your browser prefs)

Options +MultiViews

Thursday, May 26, 2011

Page 147: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Demo

• See httpd documentation multi-language

Thursday, May 26, 2011

Page 148: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

28Pluggable MPMs (2.4)

Thursday, May 26, 2011

Page 149: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

2.2 and earlier

• Changing MPM requires a rebuild.

• If you want to run several daemons with different MPMs, you'd need several different binaries

Thursday, May 26, 2011

Page 150: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

2.3

--enable-mpms-shared="event prefork worker"

Load with LoadModule

LoadModule mpm_event_module modules/mod_mpm_event.so

Thursday, May 26, 2011

Page 151: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Multi-daemon

• Same binary

• Switch MPM (and other config options) by using -f

Thursday, May 26, 2011

Page 152: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

29mod_authnz_ldap

Thursday, May 26, 2011

Page 153: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

Auth against LDAP

LoadModule authn_alias_module modules/mod_authn_alias.so

AuthLDAPBindDN cn=youruser,o=ctx AuthLDAPBindPassword yourpassword AuthLDAPURL ldap://ldap.host/o=ctx

<Directory /webpages/secure> Order deny,allow Allow from all

AuthBasicProvider ldap

AuthType Basic AuthName LDAP_Protected_Place AuthzLDAPAuthoritative off require valid-user </Directory>

Thursday, May 26, 2011

Page 154: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

LDAP auth

• Use any LDAP groups, users, ACLs, whatnot that you use elsewhere on your network

Thursday, May 26, 2011

Page 155: N Things You Didn’t Know You Could Do With Apache Tek11 ...drbacchus.com/files/20_Things.pdf · N Things You Didn’t Know You Could Do With Apache Tek11, 2011, Chicago Rich Bowen

#apache

• For anything else you don’t know, #httpd is the source of all wisdom and wit

• irc.freenode.net

[email protected]

• http://people.apache.org/~rbowen

• http://joind.in/3413

Thursday, May 26, 2011