首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VMWare工作站和Windows 10:无法连接到VM上托管的服务器

VMWare工作站和Windows 10:无法连接到VM上托管的服务器
EN

Server Fault用户
提问于 2021-12-07 13:20:24
回答 1查看 252关注 0票数 1

我在VMWare工作站15上配置了一个私有的2节点Kubernetes集群,我使用的是MetalLB和Calico。入口服务和入口看起来像:

代码语言:javascript
复制
xxx@c1-cp1:~/Desktop$ kubectl get svc -n ingress-controller-2
NAME                                         TYPE           CLUSTER-IP       EXTERNAL-IP      PORT(S)                      AGE
wsnginx-ingress-nginx-controller             LoadBalancer   10.109.117.222   192.168.44.136   80:30167/TCP,443:30680/TCP   24h
wsnginx-ingress-nginx-controller-admission   ClusterIP      10.105.103.165              443/TCP                      24h
xxx@c1-cp1:~/Desktop$ kubectl get ing apollo-ingress
NAME             CLASS     HOSTS                ADDRESS          PORTS   AGE
apollo-ingress   wsnginx   test.xxx.com   192.168.44.136   80      3h17m

我正在使用Nat网络适配器和静态IPS。我的端口转发配置如下

VM中的curl -D- http://192.168.44.136 -H 'Host: test.xxx.com'返回200状态,但当我得到一个404 NGINX NotFound时,无法从127.0.0.1:8080上的主机Win10访问它。

你能帮帮我吗?我做错什么了?不然我怎么能把它暴露在我的私人网络里呢?谢谢!

UPDATE我不确定这是否是正确的方法,但我设法从主机连接,通过稍微改变了Ingress资源。我输入了主机参数注释,如

代码语言:javascript
复制
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: apollo-ingress
spec:
  ingressClassName: wsnginx
  rules:
    #- host: test.xxx.com
    - http:
        paths:
          - backend:
              service:
                name: apollo-service
                port: 
                  number: 80
            path: /
            pathType: Prefix

现在我的入口看起来像这样

代码语言:javascript
复制
NAMESPACE   NAME                                                   CLASS     HOSTS                        ADDRESS          PORTS     AGE
default     ingress.networking.k8s.io/apollo-ingress               wsnginx   *                            192.168.44.136   80        3h31m

看来我现在也可以从我的主机上访问它了。我有一个Rest,所以我刚刚从浏览器http://127.0.0.1:8080打开它

EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-12-08 12:11:55

这似乎是缺少HTTP头的一个简单问题。

首先,简短的解释:每当在Intru清单中指定Host字段时,只有来自该主机的连接才会被接受。此信息是从Host HTTP报头中提取的。如果您不指定Host字段,则将接受来自所有源的请求。

你第一次发送的请求是正确的

代码语言:javascript
复制
curl -D- http://192.168.44.136 -H 'Host: test.xxx.com'

但第二次忘了这么做。与上述等效的Powershell是

代码语言:javascript
复制
Invoke-WebRequest -Uri http://127.0.0.1 -Headers @{"Host"="test.xxx.com"}

从命令行完成这一切都很简单,但是从web浏览器发送请求要困难一些。默认情况下,Web不允许您修改请求,以包含适当的Host头。然而,这种功能可以通过扩展来实现:

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1085627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档