<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Mod_remoteip on K-Life Hack | システムアーキテクチャ &amp; DevOps</title><link>https://klifehack.com/tags/mod_remoteip/</link><description>Recent content in Mod_remoteip on K-Life Hack | システムアーキテクチャ &amp; DevOps</description><generator>Hugo -- gohugo.io</generator><language>ja</language><lastBuildDate>Sun, 11 Oct 2026 10:07:10 +0900</lastBuildDate><atom:link href="https://klifehack.com/tags/mod_remoteip/index.xml" rel="self" type="application/rss+xml"/><item><title>NginxリバースプロキシによるSSLオフロードとApache mod_remoteip連携の実践</title><link>https://klifehack.com/p/nginx-ssl-offload-apache-mod-remoteip/</link><pubDate>Sun, 11 Oct 2026 10:07:10 +0900</pubDate><guid>https://klifehack.com/p/nginx-ssl-offload-apache-mod-remoteip/</guid><description>&lt;p&gt;インフラストラクチャの規模が拡大する過程において、各バックエンドノードで個別にSSL/TLS証明書を管理・更新し、暗号化ハンドシェイクのCPUリソースを消費させる設計は、証明書更新の運用漏れやリソース競合を招く要因となります。こうした暗号処理のオーバーヘッドと運用コストを排除するため、エッジ層にリバースプロキシを配置してSSL終端（SSL Offloading）を集約し、バックエンドには平文HTTPで高速にルーティングするアーキテクチャが一般的に採用されます。&lt;/p&gt;&#10;&lt;p&gt;しかし、この構成ではプロキシサーバがバックエンドに対して新しいTCPセッションを確立するため、バックエンドのWebサーバ側（Apache）のアクセスログや内部アプリケーション層において、接続元IPアドレスがプロキシの内部IPでマスクされてしまう問題が生じます。本稿では、Rocky Linux 9上のNginxによるTLS 1.2/1.3終端と、CentOS 7上のApacheにおける&lt;code&gt;mod_remoteip&lt;/code&gt;を用いたクライアントIP復元パイプラインの構築・検証手順を整理します。&lt;/p&gt;&#10;&lt;h2 id="システムトポロジと設計仕様"&gt;システムトポロジと設計仕様&#10;&lt;/h2&gt;&lt;p&gt;エッジプロキシとバックエンドWebサーバは同一のプライベートセグメント（&lt;code&gt;192.168.20.0/24&lt;/code&gt;）内で通信を行います。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;エッジプロキシノード&lt;/b&gt;&lt;/li&gt;&#10;&lt;li&gt;OS: Rocky Linux 9&lt;/li&gt;&#10;&lt;li&gt;内部IP: &lt;code&gt;192.168.20.11&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;役割: Port 80/443リスナー、TLS終端、HTTP/2ネゴシエーション、ヘッダー書き換え&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;バックエンドノード&lt;/b&gt;&lt;/li&gt;&#10;&lt;li&gt;OS: CentOS 7&lt;/li&gt;&#10;&lt;li&gt;内部IP: &lt;code&gt;192.168.20.12&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;役割: Apache (&lt;code&gt;httpd&lt;/code&gt;)、PHPランタイム、平文HTTP（Port 80）でのリクエスト処理&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;ドメイン解決&lt;/b&gt;: 対象FQDN（&lt;code&gt;tech.viahost.co.kr&lt;/code&gt;）はエッジプロキシのIPに紐付けられます。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="バックエンドwebサーバのベースライン構築-centos-7"&gt;バックエンドWebサーバのベースライン構築 (CentOS 7)&#10;&lt;/h2&gt;&lt;p&gt;バックエンドノード（&lt;code&gt;192.168.20.12&lt;/code&gt;）では、外部からの直接HTTPS接続は遮断し、Nginxからの内部転送のみを受け付けます。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# パッケージ導入と動作確認用スクリプトの配置&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;yum install -y httpd php&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;echo &lt;span style="color:#e6db74"&gt;&amp;#34;&amp;lt;?php phpinfo(); ?&amp;gt;&amp;#34;&lt;/span&gt; &amp;amp;gt; /var/www/html/phpinfo.php&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# サービスの有効化と起動&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl enable httpd&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl start httpd&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="エッジリバースプロキシおよびssl終端設定-rocky-linux-9"&gt;エッジリバースプロキシおよびSSL終端設定 (Rocky Linux 9)&#10;&lt;/h2&gt;&lt;p&gt;Rocky Linux 9ノード（&lt;code&gt;192.168.20.11&lt;/code&gt;）にNginxを導入し、暗号化処理、TLSプロトコル制限、リクエストサイズ制約、バックエンドへのリバースプロキシパラメータを構成します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;dnf install -y nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;VirtualHost設定ファイル（&lt;code&gt;/etc/nginx/conf.d/tech.viahost.co.kr.conf&lt;/code&gt;）を作成し、以下のディレクティブを定義します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# HTTP リスナー - HTTPSへの正規化リダイレクト&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;server&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;listen&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;80&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;server_name&lt;/span&gt; &lt;span style="color:#e6db74"&gt;tech.viahost.co.kr&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;return&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;301&lt;/span&gt; &lt;span style="color:#e6db74"&gt;https://&lt;/span&gt;$host$request_uri;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# HTTPS リスナー - SSL終端およびプロキシ転送&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;server&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;listen&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;443&lt;/span&gt; &lt;span style="color:#e6db74"&gt;ssl&lt;/span&gt; &lt;span style="color:#e6db74"&gt;http2&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;server_name&lt;/span&gt; &lt;span style="color:#e6db74"&gt;tech.viahost.co.kr&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# SSL証明書パス&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ssl_certificate&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/etc/letsencrypt/live/example.com/fullchain.pem&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ssl_certificate_key&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/etc/letsencrypt/live/example.com/privkey.pem&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 暗号化スイート・プロトコル制限&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;ssl_protocols&lt;/span&gt; &lt;span style="color:#e6db74"&gt;TLSv1.2&lt;/span&gt; &lt;span style="color:#e6db74"&gt;TLSv1.3&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# ペイロード制限の拡張（デフォルト1MBから引き上げ、HTTP 413を防止）&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;client_max_body_size&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;50m&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;location&lt;/span&gt; &lt;span style="color:#e6db74"&gt;/&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_pass&lt;/span&gt; &lt;span style="color:#e6db74"&gt;http://192.168.20.12:80&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_set_header&lt;/span&gt; &lt;span style="color:#e6db74"&gt;Host&lt;/span&gt; $host;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_set_header&lt;/span&gt; &lt;span style="color:#e6db74"&gt;X-Real-IP&lt;/span&gt; $remote_addr;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_set_header&lt;/span&gt; &lt;span style="color:#e6db74"&gt;X-Forwarded-For&lt;/span&gt; $proxy_add_x_forwarded_for;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;proxy_set_header&lt;/span&gt; &lt;span style="color:#e6db74"&gt;X-Forwarded-Proto&lt;/span&gt; $scheme;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;設定の構文チェックを実行後、デーモンを再読み込みします。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;nginx -t&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl enable nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl start nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="ディレクティブ設計の意図"&gt;ディレクティブ設計の意図&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;ssl_protocols TLSv1.2 TLSv1.3;&lt;/code&gt;: 既知の脆弱性を持つSSLv3、TLS 1.0、TLS 1.1を明示的に無効化し、前方秘匿性（Forward Secrecy）を維持します。&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;client_max_body_size 50m;&lt;/code&gt;: ファイルアップロード時にデフォルト値（1MB）による&lt;code&gt;HTTP 413 Request Entity Too Large&lt;/code&gt;が発生することを防ぐためのバッファ制限緩和です。&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;/code&gt;: クライアント本来の接続元IPアドレスをHTTPヘッダーチェーンへ追記し、ダウンストリームへ透過させます。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="mod_remoteipによる実ipアドレスの復元-apache"&gt;mod_remoteipによる実IPアドレスの復元 (Apache)&#10;&lt;/h2&gt;&lt;p&gt;リバースプロキシを介した通信では、Apacheのアクセスログに記録される接続元IPがプロキシサーバ（&lt;code&gt;192.168.20.11&lt;/code&gt;）のアドレスになってしまいます。アクセス解析や監査ログの正確性を担保するため、Apacheの&lt;code&gt;mod_remoteip&lt;/code&gt;モジュールを使用して実IPアドレスを抽出・適用します。&lt;/p&gt;&#10;&lt;h3 id="1-モジュールの読み込み確認"&gt;1. モジュールの読み込み確認&#10;&lt;/h3&gt;&lt;p&gt;CentOS 7のApache 2.4系では、&lt;code&gt;mod_remoteip&lt;/code&gt;が標準で同梱されています。設定ファイル内で読み込まれているか確認します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-apache" data-lang="apache"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LoadModule remoteip_module modules/mod_remoteip.so&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="2-httpdconfの設定変更"&gt;2. httpd.confの設定変更&#10;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;/etc/httpd/conf/httpd.conf&lt;/code&gt;にプロキシの信頼設定およびログフォーマットの調整を追加します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-apache" data-lang="apache"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# -------------------------------------------------------------&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Remote IP Configuration&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# -------------------------------------------------------------&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RemoteIPHeader X-Forwarded-For&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;RemoteIPInternalProxy &lt;span style="color:#ae81ff"&gt;192.168.20.11&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# -------------------------------------------------------------&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# Log Format Adjustments (%h から %a への変更)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# -------------------------------------------------------------&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LogFormat &lt;span style="color:#e6db74"&gt;&amp;#34;%a %l %u %t \&amp;#34;%r\&amp;#34; %&amp;amp;gt;s %b \&amp;#34;%{Referer}i\&amp;#34; \&amp;#34;%{User-Agent}i\&amp;#34;&amp;#34;&lt;/span&gt; combined&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;LogFormat &lt;span style="color:#e6db74"&gt;&amp;#34;%a %l %u %t \&amp;#34;%r\&amp;#34; %&amp;amp;gt;s %b&amp;#34;&lt;/span&gt; common&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;RemoteIPInternalProxy&lt;/code&gt;にエッジプロキシの内部IP（&lt;code&gt;192.168.20.11&lt;/code&gt;）を明示的に登録することで、当該プロキシから渡された&lt;code&gt;X-Forwarded-For&lt;/code&gt;のみを信頼し、外部の悪意あるヘッダー偽装（IP Spoofing）を破棄します。また、LogFormatのディレクティブを直接のTCP接続元である&lt;code&gt;%h&lt;/code&gt;から、解決されたクライアントIPを示す&lt;code&gt;%a&lt;/code&gt;へ変更します。&lt;/p&gt;&#10;&lt;p&gt;設定適用後、Apacheサービスを再起動します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;systemctl restart httpd&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="troubleshooting"&gt;Troubleshooting&#10;&lt;/h2&gt;&lt;p&gt;リバースプロキシ構成の初期導入時に頻発するフリクションポイントと確認手順です。&lt;/p&gt;&#10;&lt;h3 id="1-http-502-bad-gateway-が返却される"&gt;1. HTTP 502 Bad Gateway が返却される&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;b&gt;原因&lt;/b&gt;: エッジプロキシ（Rocky 9）上のSELinuxポリシーにより、Nginxによる外部ネットワーク接続が拒否されている、またはバックエンド（&lt;code&gt;192.168.20.12:80&lt;/code&gt;）でポートがリッスンされていないケースがあります。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;b&gt;確認手順&lt;/b&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# SELinuxによるHTTPネットワーク接続許可フラグの確認&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;getsebool httpd_can_network_connect&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;# 無効（off）の場合は有効化&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;setsebool -P httpd_can_network_connect &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="2-apache側で実ipが反映されずプロキシipが表示され続ける"&gt;2. Apache側で実IPが反映されず、プロキシIPが表示され続ける&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;b&gt;原因&lt;/b&gt;: &lt;code&gt;RemoteIPInternalProxy&lt;/code&gt;のIP定義ミス、または中間ヘッダー名が&lt;code&gt;X-Forwarded-For&lt;/code&gt;と一致していない場合があります。&lt;/li&gt;&#10;&lt;li&gt;&lt;b&gt;確認手順&lt;/b&gt;: PHPの環境変数出力（&lt;code&gt;phpinfo.php&lt;/code&gt;）を通じて、&lt;code&gt;$_SERVER['HTTP_X_FORWARDED_FOR']&lt;/code&gt;の値がバックエンドへ正確に届いているかをブラウザまたは&lt;code&gt;curl&lt;/code&gt;で検証します。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="システム動作検証ログ"&gt;システム動作検証ログ&#10;&lt;/h2&gt;&lt;p&gt;すべてのサービスが稼働した状態におけるプロトコル検証ログです。&lt;/p&gt;&#10;&lt;h3 id="プロキシノードのリスナーおよび転送テスト"&gt;プロキシノードのリスナーおよび転送テスト&#10;&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[root@proxy-node ~]# ss -tulpn | grep -E &amp;#39;:(80|443)&amp;#39;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:((&amp;#34;nginx&amp;#34;,pid=15234,fd=6))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tcp LISTEN 0 511 0.0.0.0:443 0.0.0.0:* users:((&amp;#34;nginx&amp;#34;,pid=15234,fd=7))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[root@proxy-node ~]# curl -I -k https://tech.viahost.co.kr/phpinfo.php&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;HTTP/2 200 &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;server: nginx/1.20.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;date: Sun, 11 Oct 2026 04:12:05 GMT&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;content-type: text/html; charset=UTF-8&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="バックエンドノードのアクセスログ検証"&gt;バックエンドノードのアクセスログ検証&#10;&lt;/h3&gt;&lt;p&gt;クライアント（例: パブリックIP &lt;code&gt;203.0.113.45&lt;/code&gt;）からアクセスした際の&lt;code&gt;/var/log/httpd/access_log&lt;/code&gt;出力結果です。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;[root@backend-node ~]# tail -n 1 /var/log/httpd/access_log&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;203.0.113.45 - - [11/Oct/2026:13:12:05 +0900] &amp;#34;GET /phpinfo.php HTTP/1.0&amp;#34; 200 45124 &amp;#34;-&amp;#34; &amp;#34;curl/7.88.1&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;接続元の実IPアドレス（&lt;code&gt;203.0.113.45&lt;/code&gt;）が先頭フィールド（&lt;code&gt;%a&lt;/code&gt;）に正常に記録されていることが確認できます。&lt;/p&gt;&#10;&lt;h2 id="configuration-notes"&gt;Configuration Notes&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;🛠️ &lt;b&gt;バックエンドクラスタへの拡張&lt;/b&gt;: 単一ホストへの転送から冗長構成へ移行する場合、Nginx側で&lt;code&gt;upstream&lt;/code&gt;ブロックを定義し、ヘルスチェックおよびバランシングアルゴリズムを設定します。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-nginx" data-lang="nginx"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;upstream&lt;/span&gt; &lt;span style="color:#e6db74"&gt;backend_cluster&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;server&lt;/span&gt; 192.168.20.12:&lt;span style="color:#ae81ff"&gt;80&lt;/span&gt; &lt;span style="color:#e6db74"&gt;max_fails=3&lt;/span&gt; &lt;span style="color:#e6db74"&gt;fail_timeout=10s&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;# 追加のバックエンドノードを順次定義&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;⚠️ &lt;b&gt;セキュリティレイヤの統合&lt;/b&gt;: エッジプロキシ層にWAF（Web Application Firewall）を組み込むことで、バックエンドへの到達前に悪意のあるリクエストパラメータやインジェクション攻撃を走査・遮断する構成への発展が可能です。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item></channel></rss>