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

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。