### 实现Nginx不同域名解析到不同的端口

在Kubernetes中,我们可以使用Ingress对象来实现Nginx不同域名解析到不同的端口的功能。下面将介绍具体的实现步骤,并附上相应的代码示例。

#### 实现流程

下面是整个实现流程的步骤表格:

| 步骤 | 过程 |
| ------ | ------ |
| 1 | 创建Ingress资源 |
| 2 | 部署多个Service |
| 3 | 配置Nginx服务器 |
| 4 | 配置Ingress规则 |

#### 具体步骤及代码示例

##### 步骤1:创建Ingress资源

首先,我们需要创建Ingress资源来定义Nginx的路由规则。

```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: domain1.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: service1
port:
number: 80
- host: domain2.com
http:
paths:
- pathType: Prefix
path: "/"
backend:
service:
name: service2
port:
number: 80
```

在这个示例中,我们创建了一个Ingress资源,定义了两个不同域名(domain1.com和domain2.com)分别转发到不同的Service。

##### 步骤2:部署多个Service

接下来,我们需要部署多个Service来处理不同的业务逻辑。

```yaml
apiVersion: v1
kind: Service
metadata:
name: service1
spec:
selector:
app: app1
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: service2
spec:
selector:
app: app2
ports:
- protocol: TCP
port: 80
targetPort: 80
```

在这里,我们创建了两个Service(service1和service2),分别处理不同的业务逻辑,通过selector指定对应的Pod。

##### 步骤3:配置Nginx服务器

我们需要配置Nginx服务器来处理不同域名的请求。

```conf
server {
listen 80;
server_name domain1.com;

location / {
proxy_pass http://service1:80;
}
}

server {
listen 80;
server_name domain2.com;

location / {
proxy_pass http://service2:80;
}
}
```

这里配置了两个Nginx的server块,分别监听不同的域名请求,并将请求转发到对应的Service。

##### 步骤4:配置Ingress规则

最后,我们需要配置Ingress控制器来负责将Ingress资源中定义的规则应用到实际的流量转发中。

```bash
kubectl apply -f ingress.yaml
```

通过执行上述命令,将Ingress资源中定义的规则应用到集群中。

通过以上步骤,我们就可以实现Nginx不同域名解析到不同端口的功能了。希望通过这篇文章,你可以清楚地了解如何在Kubernetes中实现这一功能。如果有任何问题,欢迎随时向我提问!