Yuuki

Yuuki's Blog

Hacker. Code Enthusiast.
github
bilibili
twitter

使用 Apache 和 Nginx 部署測試反向代理

概要#

Apache 作為 Web 伺服器,同時監聽 8081 和 8082 端口,分別提供不同的 Web 服務。

20240416_114107

Nginx 作為反向代理伺服器,通過 HTTP host 標頭的域名判斷要將請求轉發到哪一台伺服器的哪個端口。

20240416_114250

下面的演示示例中 Web 伺服器和反向代理伺服器將會運行在一台主機,反向代理的域名以 yuukiz.com 代替,在真實場景中,可以根據實際情況替換。

操作步驟#

安裝 Apache 和 Nginx#

CentOS 需要安裝 httpd,如果是 Ubuntu 系統則需要安裝 apache2。

# RH-based
yum install httpd

# Debian-based
apt-get install apache2

安裝 Nginx

# RH-based
yum install nginx

# Debian-based
apt-get install nginx

安裝完成服務後可以關閉開機自啟動。

systemctl disable httpd
systemctl disable apache2
systemctl disable nginx

這裡我還將 apache2 的預設首頁給刪除了。

$ cd /var/www/html; mv index.html index.html.bak

順便創建了用於虛擬主機的網站根目錄

Web 伺服器的本地路徑分別為 /var/www/html/8081/var/www/html/8082

mkdir /var/www/html/8081
mkdir /var/www/html/8082

echo "8081 HTTP Server" > /var/www/html/8081/index.html
echo "8082 HTTP Server" > /var/www/html/8082/index.html

配置伺服器#

如果僅需要將 Apache 作為 Web 伺服器,在配置監聽端口時,需要注意註釋掉原來服務所監聽的 80 端口。

Apache2 配置虛擬主機#

在 Apache2 中配置文件分散在多個目錄中,配置虛擬主機需要修改多個配置文件。

虛擬主機的配置文件通常位於 /etc/apache2/sites-available 目錄下。可以通過在這個目錄下創建一個新的配置文件,或者修改現有的配置文件來配置虛擬主機。

下面的步驟演示了創建兩個新的文件用於配置虛擬主機。

$ cat >> /etc/apache2/sites-available/8081.conf << EOF
<VirtualHost *:8081>
    DocumentRoot "/var/www/html/8081"
</VirtualHost>
EOF

$ cat >> /etc/apache2/sites-available/8082.conf << EOF
<VirtualHost *:8082>
    DocumentRoot "/var/www/html/8082"
</VirtualHost>
EOF

接下來需要通過命令啟動新的虛擬主機。

$ a2ensite 8081
$ a2ensite 8082

修改配置文件,使 Apache2 伺服器監聽 8081 和 8082 端口(同時取消監聽 80 端口)。

# Listen 80
Listen 8081
Listen 8082

修改完配置文件後重啟伺服器。在瀏覽器中訪問伺服器的 8081 和 8082 端口進行測試。

$ systemctl restart apache2

Httpd 配置虛擬主機#

Httpd 配置虛擬主機的方式比 Apache2 要簡單許多。

Httpd 的配置文件通常位於 /etc/httpd/httpd.conf,打開配置文件並添加如下內容。

# 監聽端口配置
Listen 8081
Listen 8082

# 虛擬主機配置
<VirtualHost *:8081>
    DocumentRoot "/var/www/html/8081"
</VirtualHost>

<VirtualHost *:8082>
    DocumentRoot "/var/www/html/8082"
</VirtualHost>

修改完配置文件後重啟伺服器。在瀏覽器中訪問伺服器的 8081 和 8082 端口進行測試。

20240416_104820

Nginx 配置反向代理#

Nginx 的配置文件通常位於 /etc/nginx/nginx.conf

在 Nginx 配置文件的合適位置添加如下內容。

    server {
        listen 80;
        server_name 8081.yuukiz.com;
        location / {
            proxy_pass http://localhost:8081;
        }
    }

        server {
        listen 80;
        server_name 8082.yuukiz.com;
        location / {
            proxy_pass http://localhost:8082;
        }
    }

在這個配置中,host 為 8081.yuukiz.com 的請求將會被轉發到 http://localhost:8081

host 為 8002.yuukiz.com 的請求將會被轉發到 http://localhost:8082

修改完配置文件後重啟伺服器。

測試反向代理#

手動修改 host 標頭測試#

在瀏覽器中直接訪問伺服器測試。

首先是直接訪問,頁面將呈現 Nginx 默認頁面。

20240416_111512

使用 modHeader 擴展將請求標頭中的 host 設置為 8081.yuukiz.com8082.yuukiz.com 測試,反向代理將會生效。

20240416_112639

20240416_112057

配置域名解析測試#

通過修改 host 標頭測試成功後,前往域名提供商平台,為域名配置 A 記錄,將 8081.application 和 8082.yuukiz.com 都指向反向代理伺服器的 IP 地址。

image

刪除 modHeader 插件的 host 配置。等待域名可以成功解析後,直接訪問 8081.yuukiz.com 和 8082.yuukiz.com 即可訪問通過 Nginx 反向代理的本地伺服器。

20240416_112824

20240416_112900

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。