玩命狂奔的间隙,莫忘记抬头看看前路的星光

0%

解决Mac下本机无法通过域名访问虚拟机开发环境的网络配置问题:感谢ChatGPT的创新思路

最近在使用vue3和golang开发自己的网站,希望本地开发环境和服务器环境保持一致,因此在本地安装的VMWare虚拟机来开发。然后就有了下面的故事

我:

我想在我的Mac电脑上使用VMWare Fusion安装Ubuntu 22.04虚拟机,并通过Nginx将访问转发给运行在虚拟机上监听在:8085端口的Go开发的Web服务。在Mac上的/etc/hosts中已经将域名local.zyaps.com指向了虚拟机的IP地址(172.16.151.10)。但是通过local.zyaps.com无法访问到Web服务。请问该如何修改配置?

ChatGPT:

看起来你的Nginx配置和虚拟机网络设置基本正确。首先,确保Nginx配置文件/etc/nginx/vhost/zyaps_com.conf没有语法错误,并且Nginx已经重新加载了配置。接下来,我们可以检查一些可能导致问题的地方。

省流解决方案先上:

大家时间宝贵,可以直接看解决方案,然后划走…

  • 本机修改host:127.0.0.1 local.example.com
  • 本机nginx(没有自己安装一个),设置一个虚拟主机:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    server {
    listen 80;
    # listen somename:8080;
    server_name local.zyaps.com;
    location /{
    proxy_pass http://172.16.151.10:8085;
    proxy_set_header Host $host:80;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Via "nginx";
    }
    }
  • VMWare中的web服务正常启用,侦听端口与本机host文件里保持一致。
  • 最后要注意的就是,使用http://来访问,如果使用htpps://,则仍然不会正确解析。
    因为上面端口侦听的是80端口,本机就没必要搞https了。

下面是对话实录,记录了我和ChatGPT的思考过程。

与人工智能一起寻找解决方案的过程

我:

我执行了sudo nginx -t命令,结果显示配置文件语法正确,然后重启了Nginx服务。但是问题仍然存在。我检查了Nginx错误日志/var/log/nginx/error.log,但没有发现相关错误信息。

ChatGPT:

好的,既然Nginx配置文件检查通过,而且错误日志中也没有错误记录,我们可以进一步检查其他方面。首先,确保你的Go应用程序在虚拟机上监听的是localhost:8085或者0.0.0.0:8085。同时,你可以查看Nginx的访问日志,看看是否有请求到达Nginx。

我:

我确认Go应用程序监听的是localhost:8085。我尝试通过sudo tail -f /var/log/nginx/access.log查看Nginx访问日志,但是没有看到任何访问记录。

ChatGPT:

这表明请求可能没有到达Nginx。首先,确保在Mac上,local.zyaps.com确实解析到了虚拟机的IP地址。你可以使用nslookup local.zyaps.com来验证解析结果。

我:

我执行了nslookup local.zyaps.com,结果显示local.zyaps.com解析到了172.16.151.10。这看起来没问题。

ChatGPT:

好的,DNS解析正常。接下来,我们可以检查虚拟机和Mac上的防火墙设置,确保允许流量通过Nginx所使用的端口(80端口)。同时,检查一下虚拟机的网络配置是否正确。

我:

我确认虚拟机和Mac上的防火墙都允许流量通过Nginx使用的端口。虚拟机的网络配置也没问题。

ChatGPT:

那很奇怪。既然通过172.16.151.10:8085可以访问到Go开发的Web服务,但通过local.zyaps.com无法访问,问题可能出在Mac上的某个地方。我们可以尝试清除Mac上的DNS缓存。

我:

我清除了Mac上的DNS缓存,但问题仍然存在。我考虑将VMWare Fusion的网络设置改为桥接模式,但是担心IP地址会变化。

ChatGPT:

如果你切换到桥接模式,的确可能导致IP地址变化。如果你希望继续使用NAT模式,你可以尝试在VMWare Fusion中配置端口映射,将Mac上的某个端口映射到虚拟机的80端口。这样你可以通过访问Mac上的端口来访问Nginx服务。

我:

这个主意不错,我尝试配置端口映射。现在我可以通过访问http://localhost:8080来访问Nginx服务了。非常感谢你的帮助,有了这个思路,问题得以解决。

ChatGPT:

很高兴听到问题解决了!如果你有其他问题或需要进一步的帮助,请随时告诉我。祝你在项目中取得成功!

我:

我想把我们的对话放在我的博客,请为它起一个吸引人的名字,包含感谢ChatGPT的意思,并编写一个URL地址。

ChatGPT:

当然,很高兴我的帮助对你有用!以下是一个有趣的标题和相应的URL,希望你喜欢:

标题:
“突破虚拟机网络限制:ChatGPT的智慧之路”

URL:
https://ourbrander.com/2023/11/25/breaking-through-virtual-network-challenges-with-chatgpt

我:

很喜欢你的标题,但是希望“解锁虚拟机网络挑战”修改为更加贴近问题的文案。

ChatGPT:

当然,理解你的需求。以下是一个更贴近问题的标题和修改后的URL:

标题:
“解决Mac下VMWare Fusion网络配置问题:ChatGPT的专业指导”

URL:
https://ourbrander.com/2023/11/25/solving-mac-vmware-fusion-network-issues-with-chatgpt

我:

很好,但是我需要自己修改一下,你帮我生成url:”解决Mac下本机无法通过域名访问虚拟机开发环境的网络配置问题:感谢ChatGPT的创新思路”

ChatGPT:

当然,你可以自行修改。以下是相应的URL:

URL:
https://ourbrander.com/2023/11/25/solving-mac-domain-access-to-vm-dev-environment-issue-thanks-to-chatgpt

借阅
https://ourbrander.com/2023/11/25/solving-mac-domain-access-to-vm-dev-environment-issue-thanks-to-chatgpt