Apache

OS別のディレクトリ構成

Ubuntu

設定ファイルは以下にある。

/etc/apache2/apache2.conf

以下を Include している。

/etc/apache2/mods-enabled/*.load
/etc/apache2/mods-enabled/*.conf
/etc/apache2/conf.d/*
/etc/apache2/site-enabled/*

(Ubuntu 12.04 Server, 13.04 Server で確認)

Mac OS X

設定ファイルは以下にある。

/etc/apache2/httpd.conf

※このファイルの実体は以下にある。

/private/etc/apache2/httpd.conf

以下を Include している。

/etc/apache2/other/*.conf

(OS X 10.6 で確認)

リバースプロキシ

RailsなどWEBrickを動かす場合で、80番ポートでWEBrickにアクセスできるようにするには、Apacheにリバースプロキシを設定すると簡単。passengerを入れるほどでもない場合に。

https://github.com/gitlabhq/gitlab-recipes/blob/master/apache/gitlab

Apacheの VirtualHost の設定の中に以下のように書く。

ProxyPass / http://127.0.0.1:3000/
ProxyPassReverse / http://127.0.0.1:3000/
ProxyPreserveHost On

.htaccess ファイル

ファイルが存在しない場合に限り特定のPHPなどで処理する .htaccess の設定

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  (.*) index.php/$1 [L]

特定のURLを除外してBASIC認証をかける .htaccess の設定

Satisfy Any

AuthUserFile /var/www/.htpasswd
AuthGroupFile /dev/null
AuthName "secret area"
AuthType Basic
require valid-user

SetEnvIf Request_URI /welcome.html excludeauth
Order deny,allow
Deny from all
Allow from env=excludeauth

BASIC認証をかけつつ、 SetEnfIf で特定のURLのときに変数を設定して、 Allow でその変数が設定されているときのアクセスを許可する。 Satisfy Any の指定は前半の require の設定と後半の Allow の設定のいずれかが満たされれば、アクセスが許可される、という意味。

特定のIPからのアクセスは無条件に許可して、それ以外のアクセスにはBASIC認証をかける .htaccess の設定

Satisfy Any

AuthUserFile /path/to/.htpasswd
AuthGroupFile /dev/null
AuthName "hoge"
AuthType Basic
require valid-user

Order deny,allow
Allow from 99.99.99.99
Deny from all

一時的にメンテナンス画面に切り替えるための .htaccess の設定

.htaccessRewriteEngine On の直後に以下を書く。

RewriteEngine on
RewriteCond %{REQUEST_URI} !^.*\.(js|css|gif|png|jpg)$
RewriteCond %{REQUEST_URI} !/maintenance\.html$
RewriteRule ^(.*) /maintenance.html [R,L]

メンテナンスが終わった後は、上記の RewriteEngine On 以外の3行を消して、代わりに以下を書く。

RewriteRule ^maintenance.html$ / [R,L]

URLの拡張子を .html としたまま、 .php で動かす .htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.html /$1.php

SSLのCSRの作成方法

$ ps aux | openssl md5 > rand.dat
$ openssl genrsa -rand rand.dat -des3 2048 > 2012key.pem
33 semi-random bytes loaded
Generating RSA private key, 1024 bit long modulus
.............................++++++
.......++++++
e is 65537 (0x10001)
Enter pass phrase:
Verifying - Enter pass phrase:
$ openssl req -new -key 2012key.pem -out 2012csr.pem
Enter pass phrase for 2012key.pem:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:JP
State or Province Name (full name) [Some-State]:Tokyo
Locality Name (eg, city) []:Shibuya-ku
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Inc.
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:www.example.com
Email Address []:←入力しない

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:←入力しない
An optional company name []:←入力しない
$ openssl rsa -in 2012key.pem -out 2012key-nopass.pem
Enter pass phrase for 2012key.pem:
writing RSA key
$ cat 2012key.pem
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,9B527A3154370DC3

MfBHRtPNOcpsvS/v8iROQiKI0OxkG/BDjgms5UcK8lZ0bVbWh+4pPM5k+cIs16b1
...
S3JLM5rJYiDqD68w+v1nr02eQ29eL4o8wosJJvILs5uGfe9/IbGY0g==
-----END RSA PRIVATE KEY-----
$ cat 2012key-nopass.pem
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDHJclRL5NKhmu6A3trgZJY6ZoRQfrjWcnhbxTNDRjS0sQHib/O
...
WxeCZcn78PNkRhnzV18rmniW7ey3GZt3NfDoGSP+4Gml
-----END RSA PRIVATE KEY-----
$ cat 2012csr.pem
-----BEGIN CERTIFICATE REQUEST-----
MIIBpzCCARACAQAwZzELMAkGA1UEBhMCSlAxDjAMBgNVBAgTBVRva3lvMRMwEQYD
...
EAUvkvx4rxqGKbYSr1fyPGWrTU+JSjEAlqz1QU4HPgrL1639qMroMggf8A==
-----END CERTIFICATE REQUEST-----

opensslコマンド

-> opensslコマンド

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。