NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
对于后端服务的访问规则全部都需要在 Ingress 中进行配置。常用的如下几种: * 不使用域名,转发到单个后端服务 * 不使用域名,不同的 URL 路径被转发到不同的服务 * 同一域名,不同的 URL 路径被转发到不同的服务 * 不同的域名,转发到不同的服务 #### 5.1 不使用域名,转发到单个后端服务 这种配置适用的场景是:网站不使用域名,直接通过运行 Ingress Controller 的 Node IP 地址访问后端服务。 Ingress Controller 将来自客户端的请求全部转发到后端的单一服务上,比如把对 Ingress Controller 全部的请求都转发到`nginx:80`服务上: ~~~yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-nginx spec: serviceName: nginx # 对外暴露 Service 的名称为 nginx servicePort: 80 # nginx Service 的 ClusterPort 为 80 ~~~ 需要注意的是,使用无域名的 Ingress 转发规则会默认禁用非安全 HTTP,强制使用 HTTPS 访问。 #### 5.2 不使用域名,不同的 URL 路径被转发到不同的服务 即使不使用域名,也可以配置对于不同 URL 路径的访问请求转发到不同的服务上。 比如对`<NodeIP>/courses`的请求转发到`courses:8080`服务上;对`<NodeIP>/louplus`的请求转发到`louplus:8081`服务上: ~~~yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-shiyanlou spec: rules: - http: paths: - path: /courses backend: serviceName: courses servicePort: 8080 - path: /louplus backend: serviceName: louplus servicePort: 8081 ~~~ #### 5.3 同一域名,不同的 URL 路径被转发到不同的服务 不过通常情况下,还是推荐使用域名的,这样更加方便外部客户端的访问。使用域名访问网站,通过不同的路径提供不同的服务。 比如对`https://www.lanqiao.cn/courses`的请求转发到后端`courses:8080`服务上;对`https://www.lanqiao.cn/vip`的请求转发到后端`vip:2000`服务上: ~~~yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-shiyanlou spec: rules: - host: www.lanqiao.cn http: paths: - path: /courses backend: serviceName: courses servicePort: 8080 - path: /vip backend: serviceName: vip servicePort: 2000 ~~~ #### 5.4 不同的域名,转发到不同的服务 同样也可以配置通过不同的域名提供不同的服务。 比如对`courses.lanqiao.cn`的请求转发到后端`courses:8080`服务上;对`vip.lanqiao.cn`的请求转发到后端`vip:2000`的服务上: ~~~yaml apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ingress-shiyanlou spec: rules: - host: courses.lanqiao.cn http: paths: - backend: serviceName: courses servicePort: 8080 - host: vip.lanqiao.cn http: paths: - backend: serviceName: vip servicePort: 2000 ~~~