Version 27 (modified by mitty, 11 years ago) (diff) |
---|
- blog.shiten.info » Ubuntu 10.04 の Apache2 userdir で PHP が動かない件
/etc/apache2/mods-available/php5.conf の以下のコンフィグをコメントアウトします。
# php_admin_value engine Off
- see also PHP: 設定を変更するには - Manual
- http://wiki.apache.org/httpd/InternalDummyConnection
When the Apache HTTP Server manages its child processes, it needs a way to wake up processes that are listening for new connections. To do this, it sends a simple HTTP request back to itself. This request will appear in the access_log file with the remote address set to the loop-back interface (typically 127.0.0.1 or ::1 if IPv6 is configured). If you log the User-Agent string (as in the combined log format), you will see the server signature followed by "(internal dummy connection)" on non-SSL servers. During certain periods you may see up to one such request for each httpd child process.
- .htaccessでSSL(https)必須にする “SSLRequireSSL” | Weblogy
.htaccess に SSLRequireSSL と書くだけで、そのディレクトリ以下はSSL必須となり、httpの場合はAccess Forbiddenになります。
suEXEC
- suEXECのドキュメントルートを変更する – 片っ端からメモってみる
- UbuntuWWWサーバのセットアップ / MeMoGaKi
- 特定の VirtualHost でのみ SuEXEC したい - ふしぎなぼうし
- Apache2におけるマルチユーザー環境(php-cgi+fcgid+suexecで権限分離編) - test
Server Maintenance
- 一時的にすべてのURLへのリクエストを''メンテナンス中''表示にする - いろいろwiki@princo.org
- メンテナンス中画面を出す正しい作法と.htaccessの書き方 | Web担当者Forum
- ex) /etc/apache2/sites-available/default
RewriteEngine On RewriteCond %{REQUEST_URI} !^/maintenance/.* RewriteRule ^.*$ - [R=503,L] ErrorDocument 503 /maintenance/
Name-based VirtualHost with SSL
- 名前ベースのバーチャルホストで複数ドメインにSSLを割り当てることは可能か?
- 本質的な問題
HTTP プロトコルと SSL の原理を考えてみても不可能なことは明らかですね。 ネームベースのバーチャルホストは、HTTP リクエストヘッダに含まれる「Host」を参照 して アクセスするバーチャルホストを変化させますが、 SSL 接続の場合、HTTP リクエストヘッダは暗号化されており、 参照することができません。 参照するためには、暗号を解読してやればよいわけですが、 暗号を解読するためには先に証明書の交換を行う必要がありますね。
- 本質的な問題
- Why is it not possible to use Name-Based Virtual Hosting to identify different SSL virtual hosts?
- It is possible, but only if using a 2.2.12 or later web server, built with 0.9.8j or later OpenSSL. This is because it requires a feature that only the most recent revisions of the SSL specification added, called Server Name Indication (SNI).
- The reason is that the SSL protocol is a separate layer which encapsulates the HTTP protocol. So the SSL session is a separate transaction, that takes place before the HTTP session has begun. The server receives an SSL request on IP address X and port Y (usually 443). Since the SSL request did not contain any Host: field, the server had no way to decide which SSL virtual host to use. Usually, it just used the first one it found which matched the port and IP address specified.
- ただし、全てのVirtualHostで同じワイルドカード証明書を指定すれば可能
mod_proxy
- SSLProxyEngine
- リバースプロキシでSSL接続をする際に必要
[Tue Sep 21 02:05:25 2010] [error] proxy: HTTPS: failed to enable ssl support for 127.0.0.1:443 (localhost)
- わんこ日記(2009-08-04)
- mod_proxy でバックエンドにSSLを利用する設定 - bushimichiの日記
- リバースプロキシでSSL接続をする際に必要
mod_rewrite
- Apache module mod_rewrite
- 日本語訳
- Apache URL Rewriting Guide
- 日本語訳/例が多く載っている
- apache :: Rewrite(mod_rewrite) Tipsというかメモ
- 複数行に渡って記述する際の例
- URL 書き換え( mod_rewrite ):とことん!ホームページ
- mod_rewrite サンプル集/楽
Apache1.X 系で mod_rewrite を使う場合、URLに「%2F」が含まれると思い通りに動作しない問題があります。 (Apache2.X 系でも同様ですが、Apache2.0.46 以降では「AllowEncodedSlashes On」により回避できます。)
- mod_rewriteでQUERY_STRINGをゴニョゴニョする/楽
クエリーを残したままリダイレクトするには [QSA] オプションをつける。
- BASIC認証にて、REMOTE_USERによりコンテンツを切替 | 作業日報
- ずんWiki - mod_rewrite
クッキーを見てリダイレクトさせる。 /auth-area/ 以下のアクセスで、login というクッキーが無い場合はログイン画面(/login.php)に飛ばすようにするには以下のように書けば良いと思う。
RewriteEngine on RewriteBase /auth-area/ RewriteCond %{HTTP_COOKIE} !login= RewriteRule ^.*$ /login.php [R]
HTTP_X_FORWARDED_FOR を RewriteCond で使うには?
RewriteCond %{HTTP:X-Forwarded-For} !^192\.168\.
- mod_rewrite で RBL を使ったアクセス制御を行う - y-kawazの日記
以下のような仕様のプログラムを、ここでは /etc/httpd/conf/bin/rbl_map.pl というファイル名で作成します。
#!/usr/bin/perl use strict; use Socket qw(inet_aton); my @RBL_SERVERS = ('niku.2ch.net'); $| = 1; while(<STDIN>) { chomp; my $ip = $_; my $revip = join('.', reverse(split(/\./, $ip))); my $status = 'HAM'; foreach my $server (@RBL_SERVERS) { if(inet_aton("$revip.$server")) { $status = "SPAM"; last; } } print "$status\n"; }
httpd.conf に以下のように記述します。
RewriteEngine on RewriteMap rbl-map prg:/etc/httpd/conf/bin/rbl_map.pl RewriteCond %{REQUEST_URI} ^/rbltest/ RewriteCond ${rbl-map:%{REMOTE_ADDR}} SPAM RewriteRule (.*) SPAM [F]
- リンク切れを起こさないための保険 - kawanon
RewriteRule に NE (noescape) が無いと、Wiki などクエリに % が含まれる場合に %25 に変換されてしまい、正常にアクセスできないので注意してください。
- mod_rewriteの質問です。「RewriteCond %{REQUEST_FILENAME} !-f.. - 人力検索はてな
- VirtualHostディレクティブ直下に「RewriteCond %{REQUEST_FILENAME} !-f」を設定しても正しく機能しない
- Directoryディレクティブ以下で設定すれば良い
ScriptAlias
- Apache/2.2.22
- /home/mitty/env.cgi
#!/usr/bin/perl -w print "Content-Type: text/plain\r\n\r\n"; foreach $key (sort(keys %ENV)) { print "$key = $ENV{$key}\n"; }
Apache Conf | wget https://lab.mitty.jp/env/ | wget https://lab.mitty.jp/env/hoge |
---|---|---|
ScriptAlias /env /home/mitty/env.cgi ScriptAlias /env /home/mitty/env.cgi/ ScriptAlias /env/ /home/mitty/env.cgi/ | PATH_INFO = / PATH_TRANSLATED = /path/to/docroot/index.html QUERY_STRING = REQUEST_METHOD = GET REQUEST_URI = /env/ SCRIPT_FILENAME = /home/mitty/env.cgi SCRIPT_NAME = /env SCRIPT_URI = https://lab.mitty.jp/env/ SCRIPT_URL = /env/ | PATH_INFO = /hoge PATH_TRANSLATED = /path/to/docroot/hoge QUERY_STRING = REQUEST_METHOD = GET REQUEST_URI = /env/hoge SCRIPT_FILENAME = /home/mitty/env.cgi SCRIPT_NAME = /env SCRIPT_URI = https://lab.mitty.jp/env/hoge SCRIPT_URL = /env/hoge |
ScriptAlias /env/ /home/mitty/env.cgi | QUERY_STRING = REQUEST_METHOD = GET REQUEST_URI = /env/ SCRIPT_FILENAME = /home/mitty/env.cgi SCRIPT_NAME = /env/ SCRIPT_URI = https://lab.mitty.jp/env/ SCRIPT_URL = /env/ | 404 Not Found script not found or unable to stat: /home/mitty/env.cgihoge |