V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lml12377
V2EX  ›  程序员

求教虚拟机如何绑定域名

  •  
  •   lml12377 · 2017-09-06 09:16:31 +08:00 · 5213 次点击
    这是一个创建于 2640 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是这样的,我的是 mac,装了一个 virtual box,里面是 centos 的一套 lnmp 环境,网络设置选择的 NAT,将 mac 的 8081 映射到虚拟机的 8081,虚拟机的 8081 是 nginx 其中一个网站根目录。

    在 mac 的 /private/etc/hosts 中加入了 xxx.com localhost:8081,这个时候 nginx 相关 server 的 server_name 还是 localhost,在 mac 上访问 localhost:8081 没问题,但是访问 xxx.com 无效。

    我应该怎么设置,才能在 mac 上访问 xxx.com 并让虚拟机来处理这个请求?

    21 条回复    2017-09-08 16:17:35 +08:00
    atc
        1
    atc  
       2017-09-06 09:21:14 +08:00   ❤️ 1
    nginx 的 server_name 需要加上 xxx.com
    lengxx
        2
    lengxx  
       2017-09-06 09:24:34 +08:00   ❤️ 1
    hosts 上还能指定端口的?
    UnisandK
        3
    UnisandK  
       2017-09-06 09:27:15 +08:00   ❤️ 1
    在 mac 的 /private/etc/hosts 中加入了 xxx.com localhost:8081 ? hosts 能这么用?
    panda1001
        4
    panda1001  
       2017-09-06 09:28:09 +08:00 via Android   ❤️ 1
    直接映射 80 不就好了
    lml12377
        5
    lml12377  
    OP
       2017-09-06 09:29:13 +08:00
    @lengxx 这个比较蛋疼,mac 有一套默认的环境,80 已经被占用了
    yu1u
        6
    yu1u  
       2017-09-06 09:29:28 +08:00 via iPhone   ❤️ 1
    如果用路由器的话,楼主用桥接吧,mac 一个网段,然后 nginx 绑定域名,如果还需要外网访问的话解析到公网地址,前提运营商给你的是公网 ip,然后在路由器上映射端口或 dmz ,如果只在内网访问,解析到内网 ip 就可以了!
    hard2reg
        7
    hard2reg  
       2017-09-06 09:31:09 +08:00 via iPhone   ❤️ 1
    hosts 不用指定端口……
    server_name 加上你的域名
    maojy1989
        8
    maojy1989  
       2017-09-06 09:32:04 +08:00   ❤️ 1
    从来没听说过 hosts 能指定端口
    UnisandK
        9
    UnisandK  
       2017-09-06 09:33:16 +08:00   ❤️ 1
    @lml12377 你为啥要把虚拟机的端口映射到本地来然后用 localhost 访问。。直接虚拟机监听 80 然后 hosts 把域名改成虚拟机的 IP 不就行了吗
    lml12377
        10
    lml12377  
    OP
       2017-09-06 09:33:52 +08:00
    @hard2reg 所以说要么在 mac 上直接开搞,要么把 mac 自带的那一套环境卸载了?。。。就是因为 80 端口用不了
    hard2reg
        11
    hard2reg  
       2017-09-06 10:04:46 +08:00 via iPhone   ❤️ 1
    @lml12377 最终的效果是什么
    chztv
        12
    chztv  
       2017-09-06 10:05:40 +08:00   ❤️ 1
    把 Mac 上的一套环境里 80 端口换个端口,80 给虚拟机就行了。hosts 指定端口是不行的。
    MangozZ
        13
    MangozZ  
       2017-09-06 10:29:13 +08:00
    所以为啥用 NAT ?
    就算用 NAT, 虚拟机也有自己的 ip。
    与其映射出来, 为什么不直接在 hosts 设置解析 xxx.com 虚拟机的 ip ?
    丑人多作怪 [手动滑稽]
    lgpqdwjh
        14
    lgpqdwjh  
       2017-09-06 13:56:13 +08:00
    缺乏基础知识,负分。 虽然倡导让自己的回复对别人有帮助!
    yxn1910
        15
    yxn1910  
       2017-09-06 16:48:57 +08:00   ❤️ 1
    比较简单的方式是把虚拟机网卡改为桥接,配置一个固定 ip,然后在 hosts 里把域名指到这个 ip 就可以。
    还有个办法是虚拟机加块网卡,使用 host-only 方式,虚拟机上网仍然通过 nat 网卡,但是宿主机访问虚拟机走 host-only 网卡。
    lml12377
        16
    lml12377  
    OP
       2017-09-06 17:08:09 +08:00
    @MangozZ 请问,你试过吗?
    lml12377
        17
    lml12377  
    OP
       2017-09-06 17:10:25 +08:00
    @lgpqdwjh 不知道就不知道,装逼并不能显得你多高端~
    lml12377
        18
    lml12377  
    OP
       2017-09-06 17:15:10 +08:00
    @yxn1910 谢谢,直接把 mac 自带的 apache 改改配置用起来了,你说的方法等有空试一下~
    a128445
        19
    a128445  
       2017-09-07 00:41:39 +08:00 via Android   ❤️ 1
    看你想怎么绑呗,只需要本地访问的话
    (客户机的) host 改为 127.0.0.1 (虚拟机地址) xxx.com...
    然后按照前面的人改 nginx 的 servername
    就好了...

    如果公网也可以访问...改 nginx 的 servername,不用改 host...DNS 指向公网 ip...
    lgpqdwjh
        20
    lgpqdwjh  
       2017-09-07 09:22:31 +08:00
    @lml12377 喷我也不能挽回什么 “在 mac 的 /private/etc/hosts 中加入了 xxx.com localhost:8081,这个时候 nginx 相关 server 的 server_name 还是 localhost,在 mac 上访问 localhost:8081 没问题,但是访问 xxx.com 无效。” 多傻的提问。
    lml12377
        21
    lml12377  
    OP
       2017-09-08 16:17:35 +08:00
    @lgpqdwjh 80 被本机 apache 占用,hosts 不能加端口,虚拟机 nginx 映射的 8081,既然你这么喜欢找成就感,那来吧,说说怎么解决?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5342 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 08:21 · PVG 16:21 · LAX 00:21 · JFK 03:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.