在一个服务器中运行多个服务时,直接通过 IP 和端口访问不仅不方便记忆,也不利于管理。通过 Nginx 反向代理,可以将不同的服务配置成二级域名进行访问,从而简化访问方式。以下是详细的步骤和配置示例。

前提条件

  1. 已安装并配置了 Nginx。
  2. 已有一个域名,并可以添加二级域名解析。
  3. 各个服务已经在服务器上运行,并可以通过 IP 和端口访问。

步骤

1. 安装 Nginx

如果还未安装 Nginx,可以通过以下命令进行安装

# Ubuntu/Debian
sudo apt update
sudo apt install nginx

# CentOS/RHEL
sudo yum install epel-release
sudo yum install nginx
2. 配置 DNS 解析

在域名管理后台添加二级域名的 A 记录,将其解析到服务器的 IP 地址。例如:

二级域名 类型
service1.example.com A 服务器 IP 地址
service2.example.com A 服务器 IP 地址
service3.example.com A 服务器 IP 地址

image

3. 配置 Nginx

编辑 Nginx 配置文件,通常位于 (centos)/etc/nginx/nginx.conf​ 或 /etc/nginx/conf.d/​ (Ubuntu)/etc/nginx/sites-enabled​ 目录下。可以创建一个新的配置文件,例如 services.conf​。

sudo vim services.conf

在文件中添加以下配置:

# 配置 service1 的反向代理
server {
    listen 80;
    server_name service1.example.com;

    location / {
        proxy_pass http://127.0.0.1:8081;  # 假设 service1 运行在 127.0.0.1:8081
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 配置 service2 的反向代理
server {
    listen 80;
    server_name service2.example.com;

    location / {
        proxy_pass http://127.0.0.1:8082;  # 假设 service2 运行在 127.0.0.1:8082
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 配置 service3 的反向代理
server {
    listen 80;
    server_name service3.example.com;

    location / {
        proxy_pass http://127.0.0.1:8083;  # 假设 service3 运行在 127.0.0.1:8083
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
4. 测试配置

在保存配置文件后,测试 Nginx 配置是否正确:

sudo nginx -t

如果配置正确,可以重新加载 Nginx:

sudo systemctl reload nginx 
或
nginx -s reload
5. 访问服务

现在,你可以通过以下二级域名访问不同的服务:

  • http://service1.example.com
  • http://service2.example.com
  • http://service3.example.com

总结

通过 Nginx 反向代理,将不同的服务配置成二级域名,可以简化访问方式,提高管理效率。只需配置好 DNS 解析和 Nginx 配置文件,即可实现此功能。