AlmaLinux9 nginx 負荷分散の設定方法

環境
AlmaLinux release 9.2 (Turquoise Kodkod)

概要
Nginx での負荷分散の設定です。ロードバランサーとして利用できます。

nginx server
www.arkgame.com  10.0.0.30
Web Server#1
node1.arkgame.com 10.0.0.51

Web Server#2
node2.arkgame.com 10.0.0.52

Web Server#13
node3.arkgame.com 10.0.0.53

操作手順
1.nginx サーバーへのリクエストをバックエンド Web サーバーへ負荷分散をする
# vi /etc/nginx/nginx.conf

# [http] セクション内に追記
# [backup] を指定すると [backup] 以外が通信不能な場合のみバランシング
# [weight=*] で重み付け (weight=2 の場合, 指定無サーバーと 2:1 の割合でバランシング)
http {
    upstream backends {
        server node01.arkgame.com:80 weight=2;
        server node02.arkgame.com:80;
        server node03.arkgame.com:80 backup;
    }
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

# HTTP 用の設定

# [server] セクション内を以下のように変更
    server {
        listen      80 default_server;
        listen      [::]:80 default_server;
        server_name www.arkgame.com;

        proxy_redirect      off;
        proxy_set_header    X-Real-IP $remote_addr;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header    Host $http_host;

        location / {
            proxy_pass http://backends;
        }
    }

2.HTTPS 用の設定
# vi /etc/nginx/conf.d/lb-ssl.conf

# 新規作成
# 証明書は自身のものに置き換え
server {
    listen      443 ssl http2 default_server;
    listen      [::]:443 ssl http2 default_server;
    server_name www.arkgame.com;

    ssl_certificate "/etc/letsencrypt/live/www.arkgame.com/fullchain.pem";
    ssl_certificate_key "/etc/letsencrypt/live/www.arkgame.com/privkey.pem";
    ssl_session_cache shared:SSL:1m;
    ssl_session_timeout  10m;
    ssl_ciphers PROFILE=SYSTEM;
    ssl_prefer_server_ciphers on;

    proxy_redirect      off;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    Host $http_host;

    location / {
        proxy_pass http://backends;
    }
}

3.nginxを再起動します
# systemctl reload nginx

4.SELnux を有効にしている場合は、ブール値の変更が必要です。

# setsebool -P httpd_can_network_connect on

5.バックエンド Nginx サーバーで X-Forwarded-For ヘッダーをロギングする
# vi /etc/nginx/nginx.conf

# [http] セクション内の [log_format] 設定確認
http {
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

# [server] セクション内に追記
# [set_real_ip_from] は自身の信頼できる内部ネットワークを指定
    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  node01.arkgame.com;
        root         /usr/share/nginx/html;
        set_real_ip_from   10.0.0.0/24;
        real_ip_header     X-Forwarded-For;

nginxを再起動します
# systemctl reload nginx

AlmaLinux 9

Posted by arkgame