<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Httpd on K-Life Hack | Systems Architecture &amp; DevOps</title><link>https://klifehack.com/en/tags/httpd/</link><description>Recent content in Httpd on K-Life Hack | Systems Architecture &amp; DevOps</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Mon, 07 Sep 2026 10:03:59 +0900</lastBuildDate><atom:link href="https://klifehack.com/en/tags/httpd/index.xml" rel="self" type="application/rss+xml"/><item><title>Nginx Reverse Proxy Configuration and Apache Port Migration Procedure on Rocky Linux 9</title><link>https://klifehack.com/en/p/nginx-reverse-proxy-apache-rocky-linux/</link><pubDate>Mon, 07 Sep 2026 10:03:59 +0900</pubDate><guid>https://klifehack.com/en/p/nginx-reverse-proxy-apache-rocky-linux/</guid><description>&lt;p&gt;As Web system traffic increases, conventional process/thread-driven Web servers (such as Apache HTTP Server) experience apparent memory consumption and context switch overhead proportional to the number of client connections. In contrast, deploying Nginx—which adopts an asynchronous event-driven architecture—at the network edge to accept requests as a reverse proxy serves as an effective approach for consolidating connection management and protecting the backend.&lt;/p&gt;&#10;&lt;p&gt;This article outlines the configuration procedure and operational considerations for an architecture targeting a Rocky Linux 9 environment, where an existing Apache HTTP Server (httpd) is migrated to the backend (port 8080) and Nginx (port 80) is introduced and integrated at the frontend as a reverse proxy.&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;+----------------------------------------------+&#10; | Rocky Linux 9 |&#10; | |&#10;[ Client ] ------&amp;amp;gt;| [ Port 80: Nginx ] |&#10; (Browser) HTTP | | |&#10; | | proxy_pass (Internal Forwarding) |&#10; | v |&#10; | [ Port 8080: Apache HTTP Server ] |&#10; | | |&#10; | +--&amp;amp;gt; VirtualHost: site-a.com |&#10; +----------------------------------------------+&#10;&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;&#10;&lt;h2 id="1-apache-port-migration-tcp-80---8080"&gt;1. Apache Port Migration (TCP 80 -&amp;gt; 8080)&#10;&lt;/h2&gt;&lt;p&gt;When running Nginx and Apache on the same OS instance under default configurations, a bind conflict on the standard HTTP port (TCP 80) (&lt;code&gt;EADDRINUSE: Address already in use&lt;/code&gt;) occurs. To terminate external traffic with Nginx, change the listening port on the Apache side to 8080.&lt;/p&gt;&#10;&lt;h3 id="11-changing-the-global-listen-configuration"&gt;1.1 Changing the Global Listen Configuration&#10;&lt;/h3&gt;&lt;p&gt;Edit the Apache main configuration file &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;# /etc/httpd/conf/httpd.conf&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;# Before change: Listen 80&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Listen &lt;span style="color:#ae81ff"&gt;8080&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="12-synchronizing-virtualhost-configuration"&gt;1.2 Synchronizing VirtualHost Configuration&#10;&lt;/h3&gt;&lt;p&gt;Update existing VirtualHost definitions (e.g., &lt;code&gt;/etc/httpd/conf.d/site-a.conf&lt;/code&gt;) to explicitly specify port 8080 as well.&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;# /etc/httpd/conf.d/site-a.conf&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;&amp;lt;virtualhost&lt;/span&gt; &lt;span style="color:#e6db74"&gt;*:8080=&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ServerName site-a.com&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ServerAlias www.site-a.com&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; DocumentRoot &lt;span style="color:#e6db74"&gt;/var/www/site-a&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;&amp;lt;directory&lt;/span&gt; &lt;span style="color:#e6db74"&gt;site-a=&amp;#34;&amp;#34; var=&amp;#34;&amp;#34; www=&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; AllowOverride &lt;span style="color:#66d9ef"&gt;All&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Require &lt;span style="color:#66d9ef"&gt;all&lt;/span&gt; granted&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#f92672"&gt;&amp;lt;/directory&amp;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; ErrorLog logs/site-a_error.log&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; CustomLog logs/site-a_access.log combined&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f92672"&gt;&amp;lt;/virtualhost&amp;gt;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="13-service-restart-and-port-bind-verification"&gt;1.3 Service Restart and Port Bind Verification&#10;&lt;/h3&gt;&lt;p&gt;Restart the &lt;code&gt;httpd&lt;/code&gt; service to apply the configuration and verify that it is listening on port 8080.&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;sudo systemctl restart httpd&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ss -tulpn | grep httpd&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example output:&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;tcp LISTEN 0 511 *:8080 *:* users:((&amp;#34;httpd&amp;#34;,pid=1234,fd=4))&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#10;&lt;h2 id="2-installing-nginx-and-configuring-the-reverse-proxy"&gt;2. Installing Nginx and Configuring the Reverse Proxy&#10;&lt;/h2&gt;&lt;h3 id="21-package-installation-and-automatic-start-configuration"&gt;2.1 Package Installation and Automatic Start Configuration&#10;&lt;/h3&gt;&lt;p&gt;Install Nginx from the official Rocky Linux 9 repository.&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;sudo dnf install -y nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl start nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl enable nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="22-constructing-the-reverse-proxy-block"&gt;2.2 Constructing the Reverse Proxy Block&#10;&lt;/h3&gt;&lt;p&gt;Create the proxy configuration file &lt;code&gt;/etc/nginx/conf.d/proxy.conf&lt;/code&gt; under the Nginx configuration directory.&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;# /etc/nginx/conf.d/proxy.conf&#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;site-a.com&lt;/span&gt; &lt;span style="color:#e6db74"&gt;www.site-a.com&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://127.0.0.1:8080&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;# Forward client information&#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;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;Role of each directive:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;proxy_pass http://127.0.0.1:8080;&lt;/code&gt;: Relays received requests to the local Apache instance (port 8080).&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;proxy_set_header Host $host;&lt;/code&gt;: Preserves the original Host header requested by the client, allowing Apache VirtualHost resolution to function properly.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;proxy_set_header X-Real-IP $remote_addr;&lt;/code&gt;: Explicitly transmits the client source IP address to the backend.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;&lt;/code&gt;: Appends the client IP address list routed through the proxy.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;proxy_set_header X-Forwarded-Proto $scheme;&lt;/code&gt;: Propagates the original request protocol (http or https).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="3-adjusting-selinux-policies-and-applying-configuration"&gt;3. Adjusting SELinux Policies and Applying Configuration&#10;&lt;/h2&gt;&lt;p&gt;In Rocky Linux 9, SELinux is enabled (Enforcing) by default, restricting outbound communication from web server processes to external and internal network sockets. If this restriction is not lifted, communication from Nginx to Apache will be blocked, resulting in a &lt;code&gt;502 Bad Gateway&lt;/code&gt; error.&lt;/p&gt;&#10;&lt;h3 id="31-persistently-allowing-network-relays"&gt;3.1 Persistently Allowing Network Relays&#10;&lt;/h3&gt;&lt;p&gt;💡 Enable &lt;code&gt;httpd_can_network_connect&lt;/code&gt; using the &lt;code&gt;setsebool&lt;/code&gt; command.&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;sudo 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;h3 id="32-syntax-check-and-service-reload"&gt;3.2 Syntax Check and Service Reload&#10;&lt;/h3&gt;&lt;p&gt;Verify configuration file syntax, then reload the service.&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;sudo nginx -t&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl reload nginx&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#10;&lt;h2 id="4-operational-verification-protocol"&gt;4. Operational Verification Protocol&#10;&lt;/h2&gt;&lt;p&gt;Check port bindings and HTTP header responses to confirm that the proxy functions properly.&lt;/p&gt;&#10;&lt;h3 id="41-checking-port-bind-status"&gt;4.1 Checking Port Bind Status&#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-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ss -tulpn | grep -E &lt;span style="color:#e6db74"&gt;&amp;#39;80|8080&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example output:&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;tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:((&amp;#34;nginx&amp;#34;,pid=5678,fd=6))&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;tcp LISTEN 0 511 *:8080 *:* users:((&amp;#34;httpd&amp;#34;,pid=1234,fd=4))&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="42-verifying-http-response-connectivity"&gt;4.2 Verifying HTTP Response Connectivity&#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-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl -I -H &lt;span style="color:#e6db74"&gt;&amp;#34;Host: site-a.com&amp;#34;&lt;/span&gt; http://127.0.0.1&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Example output:&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;HTTP/1.1 200 OK&#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: Mon, 07 Sep 2026 09:00:00 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;span style="display:flex;"&gt;&lt;span&gt;Connection: keep-alive&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#10;&lt;h2 id="5-troubleshooting"&gt;5. Troubleshooting&#10;&lt;/h2&gt;&lt;h3 id="51-nginx-startup-failure-job-for-nginxservice-failed"&gt;5.1 Nginx Startup Failure (&lt;code&gt;Job for nginx.service failed&lt;/code&gt;)&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;⚠️ &lt;b&gt;Cause&lt;/b&gt;: Occurs when Nginx is started while Apache is still occupying port 80.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;b&gt;Verification and Recovery Procedure&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;# 80番ポートを占有しているプロセスの特定&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ss -tulpn | grep :80&#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;# httpdの設定を確認後、再起動して80番を解放&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl restart httpd&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl start nginx&#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="52-502-bad-gateway-error"&gt;5.2 502 Bad Gateway Error&#10;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;⚠️ &lt;b&gt;Cause 1&lt;/b&gt;: The backend Apache server is stopped or not responding on the specified port (8080).&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;⚠️ &lt;b&gt;Cause 2&lt;/b&gt;: Connection from Nginx to the internal port is denied by SELinux.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;b&gt;Verification and Recovery Procedure&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;# Apacheの稼働確認&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo systemctl status httpd&#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;# SELinux Boolean状態の確認&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo 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;sudo setsebool -P httpd_can_network_connect &lt;span style="color:#ae81ff"&gt;1&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;# Nginxエラーログの詳細確認&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo tail -n &lt;span style="color:#ae81ff"&gt;20&lt;/span&gt; /var/log/nginx/error.log&#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;hr&gt;&#10;&lt;h2 id="6-operational-notes"&gt;6. Operational Notes&#10;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;🛠️ &lt;b&gt;Preserving Header Transparency&lt;/b&gt;: In a proxied architecture, consider implementing &lt;code&gt;remoteip_module&lt;/code&gt; (&lt;code&gt;RemoteIPHeader X-Forwarded-For&lt;/code&gt;) on the Apache side to prevent client IPs logged in Apache access logs from being replaced with &lt;code&gt;127.0.0.1&lt;/code&gt;.&lt;/li&gt;&#10;&lt;li&gt;🛠️ &lt;b&gt;Architectural Scalability&lt;/b&gt;: Consolidating the frontend with Nginx allows for easy future expansion, such as TLS termination (integration with Let&amp;rsquo;s Encrypt / Certbot), direct serving of static content, and rate limiting configurations.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;</description></item></channel></rss>