「Hiawatha」の版間の差分
(ページの作成:「Category:ウェブサーバー en:Hiawatha [https://www.hiawatha-webserver.org/ Hiawatha] はセキュリティ・使いやすさ・軽量の3つが特徴のオ...」) |
(同期) |
||
101行目: | 101行目: | ||
[https://www.hiawatha-webserver.org/howto/cgi_and_fastcgi HowTo] の FastCGI セクションを参照。 |
[https://www.hiawatha-webserver.org/howto/cgi_and_fastcgi HowTo] の FastCGI セクションを参照。 |
||
+ | |||
+ | ===リバースプロキシ=== |
||
+ | |||
+ | 以下は {{ic|<nowiki>https://service.domain.net</nowiki>}} のリクエストを {{ic|8181}} ポートで動作しているウェブサービスに転送するリバースプロキシ設定の例です: |
||
+ | |||
+ | {{hc|/etc/hiawatha/hiawatha.conf|<nowiki> |
||
+ | VirtualHost { |
||
+ | Hostname = service.domain.net |
||
+ | WebsiteRoot = /var/www/domain |
||
+ | StartFile = index.html |
||
+ | ReverseProxy .* http://127.0.0.1:8181/ |
||
+ | RequireTLS = yes |
||
+ | } |
||
+ | </nowiki>}} |
||
=== SSL === |
=== SSL === |
||
127行目: | 141行目: | ||
-----END CERTIFICATE----- |
-----END CERTIFICATE----- |
||
</nowiki>}} |
</nowiki>}} |
||
− | |||
− | [[Let’s Encrypt]] を使いたい場合は [https://www.hiawatha-webserver.org/forum/topic/2085 フォーラムの投稿] を見てください。 |
||
詳しくは公式の [https://www.hiawatha-webserver.org/howto/bindings HowTo] を参照。 |
詳しくは公式の [https://www.hiawatha-webserver.org/howto/bindings HowTo] を参照。 |
||
+ | |||
+ | ==== Let's Encrypt ==== |
||
+ | |||
+ | Hiawatha で Let's Encrypt を使いたい場合は [[Let’s Encrypt]] の記事に書いてある手順に従ってください。その後、Hiawatha の証明書バンドルを作成します: |
||
+ | |||
+ | # cd /etc/letsencrypt/live/domain.tld/ |
||
+ | # cat privkey.pem cert.pem chain.pem > /etc/hiawatha/certs/domain.tld/hiawatha.pem |
||
+ | |||
+ | 他のユーザーから見れないようにパーミッションを設定: |
||
+ | |||
+ | # chmod 400 /etc/hiawatha/certs/domain.tld/hiawatha.pem |
||
+ | |||
+ | {{ic|hiawatha.conf}} の TLScertFile のパスを変更: |
||
+ | |||
+ | Binding { |
||
+ | ... |
||
+ | RequireTLS = yes |
||
+ | TLScertFile = /etc/hiawatha/certs/domain.tld/hiawatha.pem |
||
+ | ... |
||
+ | } |
||
+ | |||
+ | VirtualHost { |
||
+ | ... |
||
+ | RequireTLS = yes |
||
+ | TLScertFile = /etc/hiawatha/certs/domain.tld/hiawatha.pem |
||
+ | ... |
||
+ | } |
||
+ | |||
+ | 設定できたら Hiawatha を再起動してください。 |
||
+ | |||
+ | 詳しくは [https://www.hiawatha-webserver.org/forum/topic/2085 こちらのフォーラム投稿] を参照。 |
||
==== Server Name Indication ==== |
==== Server Name Indication ==== |
2017年5月20日 (土) 11:13時点における最新版
Hiawatha はセキュリティ・使いやすさ・軽量の3つが特徴のオープンソースなウェブサーバーです。(Fast)CGI, IPv6, URL 書き換え,リバースプロキシなどに対応しています。さらに他のウェブサーバーにはない機能として SQL インジェクション, XSS, CSRF あるいは脆弱性攻撃などをブロックします。
目次
インストール
設定
基本設定
Hiawatha の設定ファイルは /etc/hiawatha/hiawatha.conf
です。デフォルトでは 404 ページを表示するようになっています。
デフォルトの設定ファイルではドキュメントディレクトリとして /srv/http/my-domain/public
が使われます。インストールが問題ないかテストするために、ダミーファイルを作成してください:
/srv/http/my-domain/public/index.html
Hello world!
設定ファイルの VIRTUAL HOSTS セクションを適宜修正してください。
そして hiawatha.service
を起動・有効化してからブラウザで my-domain
を開いてみてください。テストページが表示されるはずです。
設定ファイルのサンプルは /etc/hiawatha/hiawatha.conf.sample
にあります。
詳しくは公式の HowTo を参照。
CGI
Hiawatha では Common Gateway Interface (CGI) スクリプトをすぐに動作させることができます。CGI モジュールを有効化するだけです:
/etc/hiawatha/hiawatha.conf
VirtualHost { ... ExecuteCGI = yes }
使用するプログラミング言語のインタプリタがインストールされていることを確認してください (python であれば python をインストールします)。
詳しくは公式の HowTo を参照。
FastCGI
fcgi をインストールしてください。それで Hiawatha は fcgi を使うことができます。
PHP
php, php-cgi, php-fpm をインストールしてください (PHP や LAMP を参照)。そして php-fpm.service
を起動・有効化します。
php-cgi が動作していることを確認: php-cgi --version
。
PHP 7.0.2 (cgi-fcgi) (built: Jan 6 2016 11:51:03) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
上記のような表示がされれば、問題なく php はインストールされています。
設定ファイルの FastCGIserver
セクションに以下を追加してください:
/etc/hiawatha/hiawatha.conf
### The following fast CGI daemon requires php-fpm using a UNIX socket and TCP port, respectively. # ACTIVATE a FastCGI server for php (using UNIX socket) FastCGIserver { FastCGIid = PHP7 ConnectTo = /run/php-fpm/php-fpm.sock Extension = php SessionTimeout = 30 }
/etc/hiawatha/hiawatha.conf
### The following fast CGI daemon requires php-fpm using a UNIX socket and TCP port, respectively. # ACTIVATE a FastCGI server for php (using IP-address and TCP port) FastCGIserver { FastCGIid = PHP5 ConnectTo = 127.0.0.1:9000 Extension = php SessionTimeout = 30 }
FastCGIserver を使うには、設定ファイルに以下を追加:
/etc/hiawatha/hiawatha.conf
VirtualHost { ... UseFastCGI = PHP7 }
それから hiawatha.service
をリロードしてください。
Ruby on Rails
HowTo の FastCGI セクションを参照。
Python FastCGI
HowTo の FastCGI セクションを参照。
リバースプロキシ
以下は https://service.domain.net
のリクエストを 8181
ポートで動作しているウェブサービスに転送するリバースプロキシ設定の例です:
/etc/hiawatha/hiawatha.conf
VirtualHost { Hostname = service.domain.net WebsiteRoot = /var/www/domain StartFile = index.html ReverseProxy .* http://127.0.0.1:8181/ RequireTLS = yes }
SSL
SSL/TLS を使用するには設定ファイルに以下の Binding
を追加して hiawatha.service
をリロードしてください。
/etc/hiawatha/hiawatha.conf
Binding { Port = 443 TLScertFile = /etc/hiawatha/serverkey.pem }
serverkey.pem
のアイテムの順番は重要です。順番は以下のようにしなければなりません:
serverkey.pem
-----BEGIN RSA PRIVATE KEY----- [webserver private key] -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- [webserver certificate] -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- [optional intermediate CA certificate] -----END CERTIFICATE-----
詳しくは公式の HowTo を参照。
Let's Encrypt
Hiawatha で Let's Encrypt を使いたい場合は Let’s Encrypt の記事に書いてある手順に従ってください。その後、Hiawatha の証明書バンドルを作成します:
# cd /etc/letsencrypt/live/domain.tld/ # cat privkey.pem cert.pem chain.pem > /etc/hiawatha/certs/domain.tld/hiawatha.pem
他のユーザーから見れないようにパーミッションを設定:
# chmod 400 /etc/hiawatha/certs/domain.tld/hiawatha.pem
hiawatha.conf
の TLScertFile のパスを変更:
Binding { ... RequireTLS = yes TLScertFile = /etc/hiawatha/certs/domain.tld/hiawatha.pem ... } VirtualHost { ... RequireTLS = yes TLScertFile = /etc/hiawatha/certs/domain.tld/hiawatha.pem ... }
設定できたら Hiawatha を再起動してください。
詳しくは こちらのフォーラム投稿 を参照。
Server Name Indication
Hiawatha は SNI をサポートしており、一つの IP アドレスで複数の TLS ウェブサイトを公開することができます。上記のように TLS バインディングを設定してください。SSL/TLS 証明書があるバーチャルホストごとに、バーチャルホストのブロックの中で TLScertFile
オプションを記述します。バーチャルホストが定義されていないウェブサイトがリクエストされたときは、Binding{} で指定した証明書が使われます。
/etc/hiawatha/hiawatha.conf
VirtualHost { Hostname = www.website.org ... TLScertFile = website.pem }
出力の圧縮
Hiawatha は gzip によるコンテンツのエンコードに対応していませんが、あらかじめ zip で圧縮しておく方法が存在します。
詳しくは公式の FAQ を参照。