Linux/Source/HAProxy
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
ns-lab
nowsky system-lab
DigiLoog
Linux
Windows
開始行:
*HAProxy [#kb9ff150]
[[HAProxy>+http://www.haproxy.org/]]
L4レベルと、L7レベルでの負荷分散(ロードバランシング)に対...
HAProxy単体でパーシステンス(srcIP,cookie,etc...)も可能だ...
システムを本気で冗長化したいが、金を掛けたくない場合には...
ただし、HAProxyは負荷分散のみの為、完全冗長化をする為には...
システムに金をかけれる場合、F5のBIG-IPとかA10のThunderと...
~
*インストール [#yf53c6b8]
&size(16){&font(b){1. ビルド・インストール};};
事前に[[squid>Linux/Source/squid]]をインストールしておく...
HAProxyは単純にmakeしてあげれば、ビルドとインストールまで...
今回はHAProxyのバージョン管理も行いたい為、Makefileを直接...
# tar zxvf haproxy-1.5.8.tar.gz
# cd haproxy-1.5.8
# cp Makefile Makefile-
# sed -e "s/PREFIX = \/usr\/local/PREFIX = \/usr\/local\...
# diff Makefile- Makefile
83c83
< PREFIX = /usr/local
---
> PREFIX = /usr/local/haproxy-1.5.8
~
Makefileを編集したらビルド開始。下記で指定しているパラメ...
TARGET=Linuxのkernel。2.6.xxか3.xx.xxを使っている場合はl...
CPU=サーバのCPU種類。面倒だったら"generic"と書けば大丈夫...
ARCH=今回は未指定。CPUのアーキテクチャを指定したい場合に...
=====
# echo "TARGET=linux2628 CPU=x86_64 USE_OPENSSL=1 USE_PC...
# make `cat ./make.option`
# make install
~
上記の手動書き換えを行わない場合、make install時にインス...
# make TARGET=linux2628 CPU=x86_64 USE_OPENSSL=1 USE_PCR...
# make PREFIX=/usr/local/haproxy-1.5.8 install
~
HAProxy v2.0.0以降はビルドオプションが変わり"linux2628"が...
また、systemdへの最適化も行われているので次のオプションで...
# echo "TARGET=linux-glibc USE_PCRE=1 USE_PCRE_JIT=1 USE...
# make `cat ./make.option`
# make PREFIX=/usr/local/haproxy-2.0.1 install
~
&size(16){&font(b){2. 設定ファイル};};
-参考サイト:[[HAProxyのACLとCriteria>+http://shimula.hate...
設定ファイルの作成と、起動に必要な情報も決めていく。
コンフィグのひな形はexamplesの中にシナリオが用意されてい...
今回は必要最低限に削減したコンフィグを自作する。
# mkdir /var/run/haproxy
# groupadd haproxy
# useradd -g haproxy -d /var/run/haproxy -s /sbin/nologi...
# chown haproxy.haproxy /var/run/haproxy
# chmod 755 /var/run/haproxy
# cd /usr/local
# ln -s /usr/local/haproxy-1.5.8 ./haproxy
# cd /usr/sbin
# ln -s /usr/local/haproxy/sbin/haproxy .
# cp ${HAProxy_SRC}/examples/haproxy.init /etc/init.d/ha...
# chown root.root /etc/init.d/haproxy
# chmod 755 /etc/init.d/haproxy
# mkdir /etc/haproxy
# vi /etc/haproxy/haproxy.cfg
=====
## グローバルセクション
global
# デーモンとして動かす
daemon
# 起動させるHAProxyデーモンの数
nbproc 2
# 最大コネクション数
maxconn 4096
# HAProxyの実行ユーザ。UID指定も可能
uid haproxy
# HAProxyの実行グループ。GID指定も可能
gid haproxy
# chroot機能を利用する時のDocumentRoot指定
#chroot /usr/share/haproxy
# HAProxyの切り替わりログ。下記の場合、localhostのsy...
#log 127.0.0.1 local1 info
# HAProxyのPID
pidfile /var/run/haproxy.pid
# HAProxyの状態をWebベースで見れる様にする為のソケッ...
stats socket /var/run/haproxy/stats.sock uid 5001 g...
## デフォルトで適用されるパラメータの指定
defaults
# ロードバランシングのモード。TCPとHTTPが指定可能
mode http
# ログの出力オプション。下記の場合、httplogとHealthC...
option httplog
option dontlognull
option log-health-checks
# クライアントとのKeep-Aliveを維持しつつ、バックエン...
option http-server-close
# "Connection: close"ヘッダが無ければ付与してバック...
#option httpclose
# HAProxyを通過したパケットに、X-Forwarded-ForのHTTP...
option forwardfor
# HAProxyのリトライパラメータ。下記の場合、接続を3回...
option redispatch
retries 3
# 最大コネクション数
maxconn 2048
# ログの出力方式はglobalセクションの物を使用する。
log global
# HAProxyのコネクションタイムアウト。ms指定
timeout connect 3000
# HAProxyのクライアントとサーバのタイムアウト。デフ...
timeout client 30s
timeout server 30s
## HAProxyのstatsページ。下記の場合、8888ポートでstatsペ...
listen hastats 0.0.0.0:8888
# statsページの出力モード。httpのみ
mode http
# defaultsセクションの指定内容と同様
maxconn 128
timeout connect 3000
timeout server 10000
timeout client 10000
# stats表示を有効にする
stats enable
stats show-legends
# statsページのURL-PATHを指定する
stats uri /haproxy?hastats
# statsページのログインユーザ[User]とパスワード[Pass...
stats auth User:Password
# --- Balancing proxy server --- #
## HAProxyのフロントエンド指定。負荷分散先の振り分けルー...
frontend all 0.0.0.0:8080
# HTTPS接続時のポート番号を指定
acl ssl_port url_end 443
# 振り分けURLの指定。指定出来るパラメータは以下の通り
# [url_beg -i "パラメータ"]の様に指定すると、複数指...
# ----------
# url : URLの完全一致
# url_beg : URLの先頭一致
# url_dir : URLのディレクトリ一致
# url_dom : HTTPリクエストのドメイン完全一致
# url_end : URLの後方一致
# url_len : URLの長さ一致
# url_reg : 正規表現のマッチング
# url_sub : URLを文字列として見た場合の一致
# ----------
# if "ACL_NAME1" "ACL_NAME2" "etc..." : ACL...
# unless "ACL_NAME1" "ACL_NAME2" "etc..." : ACL...
acl url_google url_dom www.google.co.jp
use_backend google if url_google ssl_port
# 個別の振り分け条件にマッチしなかった場合に使用する...
default_backend squid
## デフォルトのバックエンド指定
backend squid
# ロードバランサーの分散処理方式
# ----------
# roundrobin : ラウンド...
# static-rr : ラウンド...
# leastconn : 接続数が...
# source : srcIPを...
# uri [len <length>] [depth <depth>] : URIの"?"...
balance roundrobin
# HTTPヘッダ内のcookieにSERVERIDを付与する。これによ...
cookie SERVERID insert indirect nocache
# 負荷分散先のバックエンドサーバを指定する
# server "サーバ名" "IPアドレス:ポート番号" "オプシ...
# ----------
# cookie "NAME" : HTTPリクエストのcookieに埋め...
# check : バックエンドサーバHealthCheck...
# inter "NUM" : 指定数毎にcheckを行う。単位はms
# fall "NUM" : 指定数のチェックに失敗したら...
# rise "NUM" : 指定数のチェックに成功したら...
# backup : バックエンドサーバをバックア...
server proxy01.hogehoge.org 192.168.1.11:8008 cookie...
server proxy02.hogehoge.org 192.168.1.12:8008 cookie...
## 個別バックエンド指定
backend google
balance roundrobin
cookie SERVERID insert indirect nocache
server proxy01.hogehoge.org 192.168.1.11:8008 cookie...
server proxy02.hogehoge.org 192.168.1.12:8008 cookie...
"stats socket"で指定した"/var/run/haproxy"はtmpfsの為、OS...
その為、initスクリプトに"/var/run/haproxy"のチェックとデ...
# vi /etc/init.d/haproxy
=====
= [ -f /etc/$BASENAME/$BASENAME.cfg ] || exit 1
+ if [ ! -e /var/run/${BASENAME} ] ; then
+ mkdir /var/run/${BASENAME}
+ chown root.root /var/run/${BASENAME}
+ chmod 750 /var/run/${BASENAME}
+ fi
= RETVAL=0
OSがsystemdを採用している場合、ビルド時にsystemdフラグを...
OSで"sd_notify()"関数をフックして起動制御する事が出来る。
# vi /etc/systemd/system/multi-user.target.wants/haproxy...
---
[Unit]
Description=HAProxy Load Balancer
After=network.target
[Service]
Type=notify
# Make sure /var/run/haproxy exists
ExecStartPre=/usr/bin/install -d /var/run/haproxy -o hap...
ExecStartPre=/usr/local/haproxy/sbin/haproxy -f ${CONFIG...
# Set environment variable
PIDFile=/var/run/haproxy.pid
EnvironmentFile=-/etc/default/haproxy
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/...
ExecStart=/usr/local/haproxy/sbin/haproxy -Ws -f ${CONFI...
ExecStop=/bin/kill -USR1 $MAINPID
ExecReload=/usr/local/haproxy/sbin/haproxy -f ${CONFIG} ...
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
Restart=always
SuccessExitStatus=143
LimitNOFILE=65535
LimitNPROC=65535
StartLimitBurst=0
[Install]
WantedBy=multi-user.target
~
&size(16){&font(b){3. 起動方法};};
設定ファイルを作成したら、起動スクリプトを叩いてみる。
また、必要に応じてログローテートの設定も作成する。
#起動
# /etc/init.d/haproxy start
#停止
# /etc/init.d/haproxy stop
#コンフィグの再読込
# /etc/init.d/haproxy reload
~
&size(16){&font(b){4. HAProxyのstats表示};};
HAProxyの動作状況を確認するには、コンフィグで書いたstatsU...
上記の通りに設定している場合、&font(b){"http://[HAProxyの...
また、ユーザ名とパスワードを指定している場合、このタイミ...
正常に稼働している場合、下記のような画面が表示される(下の...
&ref(haproxy_stats.png,left,nowrap,30%);
~
&size(16){&font(b){5. ロードバランシングパケットの転送};};
[[HAProxyとSquid(HAProxyの上位Proxy)を同じサーバで稼働さ...
ip_forwardをenableにする必要がある。
・起動中のサーバでip_forwardをenableにする
# echo 1 > /proc/sys/net/ipv4/ip_forward
=====
・永続的にip_forwardをenableにする
# vi /etc/sysctl.conf
< net.ipv4.ip_forward=0
---
> net.ipv4.ip_forward=1
=====
・/etc/sysctl.confが無い場合は、/etc/rc.d/rc.localに下記...
echo 1 > /proc/sys/net/ipv4/ip_forward
~
&size(16){&font(b){6. フロントエンドのSSL化};};
-[[HAProxy+Ubuntu14.04>+http://qiita.com/akito1986/items...
-[[HAProxyのconfigサンプル>+http://moruho.cocolog-nifty.c...
-[[リバースプロキシ配下のWordPressでHTTPS>+https://e-td.x...
HAProxyではWebアクセスフロントエンドとしてSSL待ち受けが出...
ただし、WordPressの様にアプリケーションでHTTP/HTTPSを判定...
ブラウザのSSL混在コンテンツエラーに注意する。
## グローバルセクション
global
# X-Forwarded-ForのHTTPヘッダを追加する
option forwardfor
# 証明書の検証を無効化。自己証明書を利用する場合は必須
ssl-server-verify none
# SSL POODLE脆弱性対応
ssl-default-bind-options no-sslv3 no-tls-tickets
# SSL Cipher Suiteの限定化
ssl-default-bind-ciphers EECDH+HIGH:EDH+HIGH:HIG...
# 暗号化強度のデフォルト値
tune.ssl.default-dh-param 2048
## HAProxyのHTTPSフロントエンド設定
frontend https
# HTTPSの待ち受け設定。crtの指定にはssl-default-bind...
# "crt"はファイル指定とディレクトリ指定が可能。ディ...
# "crt"で指定したディレクトリの中には、公開鍵・秘密...
# ----------
# -----BEGIN CERTIFICATE-----
# MIIEGTCC.....
# .............
# .............
# -----END CERTIFICATE-----
# -----BEGIN RSA PRIVATE KEY-----
# MIIEowIB.....
# .............
# .............
# -----END RSA PRIVATE KEY-----
# ----------
bind 0.0.0.0:443 ssl crt ...
# X-Forwardedヘッダーに、SSL通信の値を追加する
http-request set-header X-Forwarded-Proto https
http-request set-header X-Forwarded-Port %[d...
http-request set-header X-Forwarded-Host %[r...
# HTTPSバックエンドサーバの振り分けルール
acl hoge-dst hdr_dom(host) -i www...
acl hoge-port dst_port 443
use_backend hoge-back if hog...
backend hoge-back
# SourceHashで負荷分散を行う
balance source
# ssl : バックエンドサーバにSSL(HTTPS)でアク...
# verify none : 証明書検証を明示的に無効化。自己証明...
server www1.hogehoge.org 192.168.1.11:443 check ssl ...
server www2.hogehoge.org 192.168.1.12:443 check ssl ...
バックエンドがWordPressの場合、SSL混在エラーの出る場合が...
エラーが出た場合は、wp-config.phpに下記設定を追加する
if((empty($_SERVER['HTTP_X_FORWARDED_HOST']) == false)){
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_H...
}
if((empty($_SERVER['HTTP_X_FORWARDED_FOR']) == false)){
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED...
}
if((empty($_SERVER['HTTP_X_FORWARDED_PROTO']) == false) ...
$_SERVER['HTTPS'] = 'on';
}
終了行:
*HAProxy [#kb9ff150]
[[HAProxy>+http://www.haproxy.org/]]
L4レベルと、L7レベルでの負荷分散(ロードバランシング)に対...
HAProxy単体でパーシステンス(srcIP,cookie,etc...)も可能だ...
システムを本気で冗長化したいが、金を掛けたくない場合には...
ただし、HAProxyは負荷分散のみの為、完全冗長化をする為には...
システムに金をかけれる場合、F5のBIG-IPとかA10のThunderと...
~
*インストール [#yf53c6b8]
&size(16){&font(b){1. ビルド・インストール};};
事前に[[squid>Linux/Source/squid]]をインストールしておく...
HAProxyは単純にmakeしてあげれば、ビルドとインストールまで...
今回はHAProxyのバージョン管理も行いたい為、Makefileを直接...
# tar zxvf haproxy-1.5.8.tar.gz
# cd haproxy-1.5.8
# cp Makefile Makefile-
# sed -e "s/PREFIX = \/usr\/local/PREFIX = \/usr\/local\...
# diff Makefile- Makefile
83c83
< PREFIX = /usr/local
---
> PREFIX = /usr/local/haproxy-1.5.8
~
Makefileを編集したらビルド開始。下記で指定しているパラメ...
TARGET=Linuxのkernel。2.6.xxか3.xx.xxを使っている場合はl...
CPU=サーバのCPU種類。面倒だったら"generic"と書けば大丈夫...
ARCH=今回は未指定。CPUのアーキテクチャを指定したい場合に...
=====
# echo "TARGET=linux2628 CPU=x86_64 USE_OPENSSL=1 USE_PC...
# make `cat ./make.option`
# make install
~
上記の手動書き換えを行わない場合、make install時にインス...
# make TARGET=linux2628 CPU=x86_64 USE_OPENSSL=1 USE_PCR...
# make PREFIX=/usr/local/haproxy-1.5.8 install
~
HAProxy v2.0.0以降はビルドオプションが変わり"linux2628"が...
また、systemdへの最適化も行われているので次のオプションで...
# echo "TARGET=linux-glibc USE_PCRE=1 USE_PCRE_JIT=1 USE...
# make `cat ./make.option`
# make PREFIX=/usr/local/haproxy-2.0.1 install
~
&size(16){&font(b){2. 設定ファイル};};
-参考サイト:[[HAProxyのACLとCriteria>+http://shimula.hate...
設定ファイルの作成と、起動に必要な情報も決めていく。
コンフィグのひな形はexamplesの中にシナリオが用意されてい...
今回は必要最低限に削減したコンフィグを自作する。
# mkdir /var/run/haproxy
# groupadd haproxy
# useradd -g haproxy -d /var/run/haproxy -s /sbin/nologi...
# chown haproxy.haproxy /var/run/haproxy
# chmod 755 /var/run/haproxy
# cd /usr/local
# ln -s /usr/local/haproxy-1.5.8 ./haproxy
# cd /usr/sbin
# ln -s /usr/local/haproxy/sbin/haproxy .
# cp ${HAProxy_SRC}/examples/haproxy.init /etc/init.d/ha...
# chown root.root /etc/init.d/haproxy
# chmod 755 /etc/init.d/haproxy
# mkdir /etc/haproxy
# vi /etc/haproxy/haproxy.cfg
=====
## グローバルセクション
global
# デーモンとして動かす
daemon
# 起動させるHAProxyデーモンの数
nbproc 2
# 最大コネクション数
maxconn 4096
# HAProxyの実行ユーザ。UID指定も可能
uid haproxy
# HAProxyの実行グループ。GID指定も可能
gid haproxy
# chroot機能を利用する時のDocumentRoot指定
#chroot /usr/share/haproxy
# HAProxyの切り替わりログ。下記の場合、localhostのsy...
#log 127.0.0.1 local1 info
# HAProxyのPID
pidfile /var/run/haproxy.pid
# HAProxyの状態をWebベースで見れる様にする為のソケッ...
stats socket /var/run/haproxy/stats.sock uid 5001 g...
## デフォルトで適用されるパラメータの指定
defaults
# ロードバランシングのモード。TCPとHTTPが指定可能
mode http
# ログの出力オプション。下記の場合、httplogとHealthC...
option httplog
option dontlognull
option log-health-checks
# クライアントとのKeep-Aliveを維持しつつ、バックエン...
option http-server-close
# "Connection: close"ヘッダが無ければ付与してバック...
#option httpclose
# HAProxyを通過したパケットに、X-Forwarded-ForのHTTP...
option forwardfor
# HAProxyのリトライパラメータ。下記の場合、接続を3回...
option redispatch
retries 3
# 最大コネクション数
maxconn 2048
# ログの出力方式はglobalセクションの物を使用する。
log global
# HAProxyのコネクションタイムアウト。ms指定
timeout connect 3000
# HAProxyのクライアントとサーバのタイムアウト。デフ...
timeout client 30s
timeout server 30s
## HAProxyのstatsページ。下記の場合、8888ポートでstatsペ...
listen hastats 0.0.0.0:8888
# statsページの出力モード。httpのみ
mode http
# defaultsセクションの指定内容と同様
maxconn 128
timeout connect 3000
timeout server 10000
timeout client 10000
# stats表示を有効にする
stats enable
stats show-legends
# statsページのURL-PATHを指定する
stats uri /haproxy?hastats
# statsページのログインユーザ[User]とパスワード[Pass...
stats auth User:Password
# --- Balancing proxy server --- #
## HAProxyのフロントエンド指定。負荷分散先の振り分けルー...
frontend all 0.0.0.0:8080
# HTTPS接続時のポート番号を指定
acl ssl_port url_end 443
# 振り分けURLの指定。指定出来るパラメータは以下の通り
# [url_beg -i "パラメータ"]の様に指定すると、複数指...
# ----------
# url : URLの完全一致
# url_beg : URLの先頭一致
# url_dir : URLのディレクトリ一致
# url_dom : HTTPリクエストのドメイン完全一致
# url_end : URLの後方一致
# url_len : URLの長さ一致
# url_reg : 正規表現のマッチング
# url_sub : URLを文字列として見た場合の一致
# ----------
# if "ACL_NAME1" "ACL_NAME2" "etc..." : ACL...
# unless "ACL_NAME1" "ACL_NAME2" "etc..." : ACL...
acl url_google url_dom www.google.co.jp
use_backend google if url_google ssl_port
# 個別の振り分け条件にマッチしなかった場合に使用する...
default_backend squid
## デフォルトのバックエンド指定
backend squid
# ロードバランサーの分散処理方式
# ----------
# roundrobin : ラウンド...
# static-rr : ラウンド...
# leastconn : 接続数が...
# source : srcIPを...
# uri [len <length>] [depth <depth>] : URIの"?"...
balance roundrobin
# HTTPヘッダ内のcookieにSERVERIDを付与する。これによ...
cookie SERVERID insert indirect nocache
# 負荷分散先のバックエンドサーバを指定する
# server "サーバ名" "IPアドレス:ポート番号" "オプシ...
# ----------
# cookie "NAME" : HTTPリクエストのcookieに埋め...
# check : バックエンドサーバHealthCheck...
# inter "NUM" : 指定数毎にcheckを行う。単位はms
# fall "NUM" : 指定数のチェックに失敗したら...
# rise "NUM" : 指定数のチェックに成功したら...
# backup : バックエンドサーバをバックア...
server proxy01.hogehoge.org 192.168.1.11:8008 cookie...
server proxy02.hogehoge.org 192.168.1.12:8008 cookie...
## 個別バックエンド指定
backend google
balance roundrobin
cookie SERVERID insert indirect nocache
server proxy01.hogehoge.org 192.168.1.11:8008 cookie...
server proxy02.hogehoge.org 192.168.1.12:8008 cookie...
"stats socket"で指定した"/var/run/haproxy"はtmpfsの為、OS...
その為、initスクリプトに"/var/run/haproxy"のチェックとデ...
# vi /etc/init.d/haproxy
=====
= [ -f /etc/$BASENAME/$BASENAME.cfg ] || exit 1
+ if [ ! -e /var/run/${BASENAME} ] ; then
+ mkdir /var/run/${BASENAME}
+ chown root.root /var/run/${BASENAME}
+ chmod 750 /var/run/${BASENAME}
+ fi
= RETVAL=0
OSがsystemdを採用している場合、ビルド時にsystemdフラグを...
OSで"sd_notify()"関数をフックして起動制御する事が出来る。
# vi /etc/systemd/system/multi-user.target.wants/haproxy...
---
[Unit]
Description=HAProxy Load Balancer
After=network.target
[Service]
Type=notify
# Make sure /var/run/haproxy exists
ExecStartPre=/usr/bin/install -d /var/run/haproxy -o hap...
ExecStartPre=/usr/local/haproxy/sbin/haproxy -f ${CONFIG...
# Set environment variable
PIDFile=/var/run/haproxy.pid
EnvironmentFile=-/etc/default/haproxy
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/...
ExecStart=/usr/local/haproxy/sbin/haproxy -Ws -f ${CONFI...
ExecStop=/bin/kill -USR1 $MAINPID
ExecReload=/usr/local/haproxy/sbin/haproxy -f ${CONFIG} ...
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
Restart=always
SuccessExitStatus=143
LimitNOFILE=65535
LimitNPROC=65535
StartLimitBurst=0
[Install]
WantedBy=multi-user.target
~
&size(16){&font(b){3. 起動方法};};
設定ファイルを作成したら、起動スクリプトを叩いてみる。
また、必要に応じてログローテートの設定も作成する。
#起動
# /etc/init.d/haproxy start
#停止
# /etc/init.d/haproxy stop
#コンフィグの再読込
# /etc/init.d/haproxy reload
~
&size(16){&font(b){4. HAProxyのstats表示};};
HAProxyの動作状況を確認するには、コンフィグで書いたstatsU...
上記の通りに設定している場合、&font(b){"http://[HAProxyの...
また、ユーザ名とパスワードを指定している場合、このタイミ...
正常に稼働している場合、下記のような画面が表示される(下の...
&ref(haproxy_stats.png,left,nowrap,30%);
~
&size(16){&font(b){5. ロードバランシングパケットの転送};};
[[HAProxyとSquid(HAProxyの上位Proxy)を同じサーバで稼働さ...
ip_forwardをenableにする必要がある。
・起動中のサーバでip_forwardをenableにする
# echo 1 > /proc/sys/net/ipv4/ip_forward
=====
・永続的にip_forwardをenableにする
# vi /etc/sysctl.conf
< net.ipv4.ip_forward=0
---
> net.ipv4.ip_forward=1
=====
・/etc/sysctl.confが無い場合は、/etc/rc.d/rc.localに下記...
echo 1 > /proc/sys/net/ipv4/ip_forward
~
&size(16){&font(b){6. フロントエンドのSSL化};};
-[[HAProxy+Ubuntu14.04>+http://qiita.com/akito1986/items...
-[[HAProxyのconfigサンプル>+http://moruho.cocolog-nifty.c...
-[[リバースプロキシ配下のWordPressでHTTPS>+https://e-td.x...
HAProxyではWebアクセスフロントエンドとしてSSL待ち受けが出...
ただし、WordPressの様にアプリケーションでHTTP/HTTPSを判定...
ブラウザのSSL混在コンテンツエラーに注意する。
## グローバルセクション
global
# X-Forwarded-ForのHTTPヘッダを追加する
option forwardfor
# 証明書の検証を無効化。自己証明書を利用する場合は必須
ssl-server-verify none
# SSL POODLE脆弱性対応
ssl-default-bind-options no-sslv3 no-tls-tickets
# SSL Cipher Suiteの限定化
ssl-default-bind-ciphers EECDH+HIGH:EDH+HIGH:HIG...
# 暗号化強度のデフォルト値
tune.ssl.default-dh-param 2048
## HAProxyのHTTPSフロントエンド設定
frontend https
# HTTPSの待ち受け設定。crtの指定にはssl-default-bind...
# "crt"はファイル指定とディレクトリ指定が可能。ディ...
# "crt"で指定したディレクトリの中には、公開鍵・秘密...
# ----------
# -----BEGIN CERTIFICATE-----
# MIIEGTCC.....
# .............
# .............
# -----END CERTIFICATE-----
# -----BEGIN RSA PRIVATE KEY-----
# MIIEowIB.....
# .............
# .............
# -----END RSA PRIVATE KEY-----
# ----------
bind 0.0.0.0:443 ssl crt ...
# X-Forwardedヘッダーに、SSL通信の値を追加する
http-request set-header X-Forwarded-Proto https
http-request set-header X-Forwarded-Port %[d...
http-request set-header X-Forwarded-Host %[r...
# HTTPSバックエンドサーバの振り分けルール
acl hoge-dst hdr_dom(host) -i www...
acl hoge-port dst_port 443
use_backend hoge-back if hog...
backend hoge-back
# SourceHashで負荷分散を行う
balance source
# ssl : バックエンドサーバにSSL(HTTPS)でアク...
# verify none : 証明書検証を明示的に無効化。自己証明...
server www1.hogehoge.org 192.168.1.11:443 check ssl ...
server www2.hogehoge.org 192.168.1.12:443 check ssl ...
バックエンドがWordPressの場合、SSL混在エラーの出る場合が...
エラーが出た場合は、wp-config.phpに下記設定を追加する
if((empty($_SERVER['HTTP_X_FORWARDED_HOST']) == false)){
$_SERVER['HTTP_HOST'] = $_SERVER['HTTP_X_FORWARDED_H...
}
if((empty($_SERVER['HTTP_X_FORWARDED_FOR']) == false)){
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_X_FORWARDED...
}
if((empty($_SERVER['HTTP_X_FORWARDED_PROTO']) == false) ...
$_SERVER['HTTPS'] = 'on';
}
ページ名: