nginx配置虚拟机后如何设置域名访问,虚拟主机配置方法?

在虚拟机中装好Nginx后,想通过域名而非IP访问网站,核心步骤就三步:把虚拟机的网络模式改成桥接、在Nginx配置文件里添加对应的server块、再把域名解析到这台虚拟机的IP上,配置过程里最容易卡住的是网络模式和防火墙,而不是Nginx本身。

下面我按实际操作的顺序,把每一步怎么弄、为什么这么弄、以及碰到问题怎么排查,完整走一遍。

零基础入门 Nginx 反向代理配置 | 自定义域名绑定教程 | 从理论到实战的完整指南
加载中
零基础入门 Nginx 反向代理配置 | 自定义域名绑定教程 | 从理论到实战的完整指南

安装Nginx之前,先想清楚虚拟机网络模式

很多朋友在VMware或VirtualBox里装完Nginx,发现本机用浏览器访问虚拟机IP没反应,第一时间怀疑是Nginx配置错了,其实九成问题出在网络模式上。

虚拟机有三种常见的网络工作方式,区别很大:

  • NAT模式:虚拟机通过宿主机上网,宿主机可以访问虚拟机,但局域网里的其他设备访问不到,域名解析到了虚拟机IP,外部请求也进不来。
  • 桥接模式:虚拟机直接占用局域网的一个独立IP,和宿主机平级,局域网内所有设备都能通过这个IP访问虚拟机,做域名访问首选这个模式。
  • 仅主机模式:只能宿主机和虚拟机互通,外面完全访问不到,一般用来做测试隔离,不适合对外提供网站服务。

行业共识认为,凡是涉及域名访问、对外提供Web服务的场景,必须使用桥接模式。 如果你确认虚拟机用的是NAT模式,先把这个改掉,能省掉后面一大堆排查时间。

修改虚拟机网络模式的实操路径

以VMware为例:

  1. 关闭虚拟机电源。
  2. 右键虚拟机名称,打开“设置”。
  3. 找到“网络适配器”,把网络连接方式从“NAT”改成“桥接模式”。
  4. 启动虚拟机,重新登录系统,新分配到的IP可以用ip addr命令查看。

桥接模式下虚拟机相当于局域网里的一台独立主机,你可以把这个IP在浏览器里打一下,如果能看到Nginx的默认欢迎页,说明网络这一关已经通过了,要是还不行,往下看Nginx的安装和配置,但多数情况下问题就出在这一步。

nginx虚拟主机配置不生效?先检查这几个细节

网络通畅之后,才进入正题:配置虚拟主机,Nginx官方文档里把虚拟主机叫Server Block,一个Nginx可以同时跑多个网站,每个网站拥有独立的域名和独立的站点根目录,互不干扰。

第一步:确认Nginx安装方式和配置文件位置

用包管理器安装的Nginx,不同系统路径略有区别:

  • CentOS / RHEL系:配置文件在/etc/nginx/nginx.conf,子配置目录是/etc/nginx/conf.d/,站点根目录一般是/usr/share/nginx/html。
  • Ubuntu / Debian系:主配置在/etc/nginx/nginx.conf,子配置目录是/etc/nginx/sites-available/

    nginx配置虚拟机后如何设置域名访问,虚拟主机配置方法?

    ,启用目录是/etc/nginx/sites-enabled/,站点根目录一般是/var/www/html。

我建议你只在conf.d或sites-available目录里新建文件,不要去动主配置文件,这样以后网站多了,每个域名一个独立文件,维护起来一目了然。

第二步:创建站点目录和测试页面

假设你的域名是example.com,先建一个存放网站文件的目录:

mkdir -p /var/www/example.com
echo "<h1>Hello, Nginx Virtual Host</h1>" > /var/www/example.com/index.html

目录路径可以自定义,但要记住这个路径,后面配置里用的就是它。

第三步:编写虚拟主机配置文件

以CentOS系为例,在/etc/nginx/conf.d/里新建一个文件,文件名建议用域名命名:

vi /etc/nginx/conf.d/example.com.conf

写入以下配置:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com;
    index index.html;
    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
}

这里每一行都很关键:

  • listen 80:监听80端口,这是HTTP默认端口。
  • server_name:填你的完整域名,这是Nginx区分不同网站的关键。
  • root:指定网站文件放在哪个目录,对应刚才建的目录。
  • index:访问域名时默认打开的文件名。

写完保存退出,然后测试配置文件语法:

nginx -t

看到ok和successful这两个关键字,说明配置没问题,然后重载配置让修改生效:

systemctl reload nginx

第四步:设置SELinux或防火墙放行

这一步在CentOS上尤其常见。即使配置文件全对,SELinux处于Enforcing状态时,Nginx可能没有权限访问非默认目录。 你会看到配置没问题、服务也正常,但访问就是404或者403。

快速排查方法:

getenforce

如果返回Enforcing,可以先临时放宽权限测试:

setenforce 0

然后再用浏览器访问,如果能打开了,说明确实是SELinux拦截,需要给网站目录打上正确的标签:

chcon -R -t httpd_sys_content_t /var/www/example.com

之后把SELinux恢复原状态就行。

防火墙方面,确认80端口已经放行:

firewall-cmd --permanent --add-service=http
firewall-cmd --reload

Ubuntu系统则检查ufw状态,sudo ufw allow 80即可。

nginx配置虚拟机后如何设置域名访问,虚拟主机配置方法?

第五步:在虚拟机上直接测试

在虚拟机本地用curl测试,可以排除网络层面的干扰:

curl -H "Host: example.com" http://127.0.0.1

如果返回了你写的HTML内容,说明Nginx虚拟主机本身已经配置成功,那么问题就只剩域名解析这一关了。

nginx虚拟机安装后域名访问不了?从域名解析链路逐段查

Nginx配置完全正常,但域名就是打不开网站,这时候按下面的思路逐环节排查,很快能定位问题。

域名解析的两种场景

你已经购买了真实域名。

到域名服务商的控制台,把A记录指向虚拟机IP,注意,如果虚拟机部署在酷番云、简米云等国内云服务器上,域名必须完成ICP备案,否则80端口会被拦截,据工信部公开信息,未备案域名在国内服务商处不能开通Web访问,这是硬性要求。

本地测试环境,没买域名。

修改本机的hosts文件就行了,Windows路径是C:WindowsSystem32driversetchosts,macOS和Linux是/etc/hosts,最后追加一行:

168.1.100 example.com

把前面的IP换成你虚拟机的实际IP。

排查命令按这个顺序执行

在宿主机上依次执行:

  1. ping example.com:看返回的IP是否等于虚拟机IP,如果ping不同,说明解析没生效或hosts没写对。
  2. ping 虚拟机IP:如果IP能通但域名不通,问题出在DNS解析或hosts文件,如果IP都不通,回到网络模式检查,多半是NAT模式或者桥接没接好。
  3. 用telnet example.com 80或nc -vz example.com 80:测试80端口通不通,如果通,浏览器应该能打开了;如果不通,查防火墙。

一个容易被忽视的缓存问题

修改了hosts文件或域名解析记录后,浏览器可能还在用旧的DNS缓存,Windows下刷新DNS缓存:

ipconfig /flushdns

macOS用sudo killall -HUP mDNSResponder,Linux用sudo systemctl restart systemd-resolved或者sudo resolvectl flush-caches。

Chrome浏览器可以在地址栏输入chrome://net-internals/#dns,点击“Clear host cache”。

nginx绑定域名后常见的几个坑和对应的处理办法

在实际搭建过程中,有些问题出现的频率高得惊人,整理成表格方便对照。

nginx配置虚拟机后如何设置域名访问,虚拟主机配置方法?

故障现象 可能原因 处理方法
访问域名跳到Nginx默认页 server_name没有匹配上 检查配置文件的server_name是否和域名完全一致;用nginx -t测试后reload
访问虚拟机IP能通,域名不通 DNS解析没生效 / hosts没配 按上面场景二的排查链路逐段检查
配置了多个虚拟主机,但都显示同一个网站 第一个server块被当作默认站点 每个server块都明确写server_name,不要留空;用server_name区分而不是靠顺序
网站目录打不开,报403 Forbidden index文件不存在或目录权限不对 确认目录里有index.html,chmod 755目录权限
重启虚拟机后IP变了,域名解析失效 桥接模式下DHCP重新分配了IP 在路由器里给虚拟机MAC地址绑定固定IP,或者虚拟机里改静态IP配置

这里专门说一下“多个域名指向同一个IP”的情况,很多人问nginx虚拟机怎么配置域名才能让不同域名访问不同网站,其实就是在/etc/nginx/conf.d/下为每个域名各写一个独立的conf文件,server_name写各自的域名,root指各自的目录,两个配置文件同时存在,Nginx会自动按域名路由,互不冲突。

还有一个细节,配置完记得systemctl reload nginx而不是restart,reload是平滑重载,当前连接不中断,restart会断开所有请求,只要是改配置文件,一律用reload。

常见问题速答

nginx配置虚拟主机后域名无法访问,是不是还要修改主配置文件?

不需要修改主配置文件,只要确保主配置文件nginx.conf里有include /etc/nginx/conf.d/.conf;这一行,所有放在conf.d目录下的配置就会自动生效,Ubuntu系统则把配置文件放到sites-available后,在sites-enabled里建一个软链接指向它,然后systemctl reload nginx。

一台虚拟机可以配置多个域名吗?

可以,没有数量限制,每增加一个网站,在conf.d目录下新建一个独立配置文件,server_name写新域名,root指定新网站目录,然后reload nginx就能生效,同一个IP、同一个80端口可以同时承载几十个域名站点,这也是Nginx虚拟主机机制的核心能力。

虚拟机里域名能正常解析,但从外部访问超时,还可能是什么原因?

检查宿主机和虚拟机之间是否有额外的网络隔离策略,企业内网或校园网常常会开启“端口隔离”或“AP隔离”,导致不同设备之间即使同一网段也无法互通,把虚拟机接到路由器主LAN口下,避免经过旁路AP,多数情况下就能解决,如果是云服务器,还需在安全组规则里放行80端口入方向,这一步经常被忽略。

写在最后

解决nginx安装虚拟机后配置虚拟主机并实现域名访问的问题,本质就是顺序正确然后逐层验证,先确认桥接网络,再配置虚拟主机,最后打通域名解析,每一步都有明确命令可以验证,不用瞎猜,配置文件用reload热加载,出现异常时多看/var/log/nginx/error.log里的报错信息,大部分问题都能在日志里找到真正原因。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/628480.html

赞 (0)
ecs服务器和域名绑定后,如何正确配置才能访问?
上一篇 2026年9月6日 16:43
域名映射和域名绑定有什么区别?新手如何正确操作?
下一篇 2026年9月6日 16:44

相关推荐

  • 杭州大带宽服务器租用选型要点有哪些?,哪家性价比高?

    杭州大带宽服务器租用,选型核心在于明确业务负载、匹配带宽类型(单线/多线/BGP)、评估机房网络质量(延迟、丢包率)以及服务商的技术支持能力,杭州大带宽服务器怎么选?带宽类型与线路质量是关键选型第一步不是看价格,而是搞清楚你的业务到底需要什么样的带宽,不同类型的带宽,本质上决定了用户体验的上限和成本的下限,单线……

    2026年8月10日
    700
  • 北京独立服务器租用费用明细要分开看哪些项目,怎么收费

    北京独立服务器租用费用没有一口价,它由硬件配置、带宽线路、IP数量、机房等级四张独立账单组成,分开算才能避免被“打包价”坑,很多第一次租北京服务器的朋友,上来就问“多少钱一年”,这其实是个很难回答的问题,因为独立服务器不像买手机,配置固定、价格透明,它的费用是叠加出来的,每一部分都有独立的定价逻辑,今天咱们就把……

    2026年8月11日
    1300
  • 美国服务器租用中的磁盘阵列是什么意思?

    磁盘阵列(RAID)是将多块物理硬盘组合成一个逻辑单元的技术,核心目的是在提升读写速度的同时,通过数据冗余机制防止单点故障导致的数据丢失,是保障美国服务器业务连续性的关键基础设施,当你在租赁美国服务器时,面对琳琅满目的配置单,RAID选项往往让人眼花缭乱,它不仅仅是把硬盘插在一起那么简单,而是通过特定的算法,在……

    2026年6月18日
    2000
  • 南京制造企业数据容灾备份租用服务器如何部署,注意哪些问题

    南京制造企业数据容灾备份,最务实的路线是租用服务器并搭建异地容灾架构,部署时按业务等级分级实施,优先保障生产系统的快速恢复能力,南京制造企业数据容灾备份方案怎么选?先搞清楚业务对容灾的真实需求制造企业通常有多个系统,从ERP、MES到文件服务器,不同系统对数据丢失和停机时间的容忍度完全不同,行业共识认为,核心生……

    2026年8月9日
    1400
  • 如何测试服务器线路好不好?服务器线路质量怎么测试?

    判断服务器线路质量的优劣,核心在于稳定性、延迟表现与路由路径的优化程度,一条优质的线路必须具备“三低一高”的特征:低丢包率、低延迟、低抖动以及高峰期高可用性,对于企业级应用或对网络质量要求较高的业务而言,线路质量直接决定了用户体验与业务连续性,测试不仅仅是看速度有多快,更要看在网络拥堵时段是否依然能够保持畅通无……

    2026年3月8日
    12000
  • html学校网站模板怎么找?免费学校网站模板下载

    2026年制作学校网站模板的最佳方案是选择响应式HTML5架构,结合语义化标签与SEO优化插件,确保移动端适配与搜索引擎收录效率,而非盲目追求复杂的动态功能,在数字化教育转型的深水区,学校官网早已不再是简单的信息展示板,而是品牌形象、招生转化和家校互动的核心枢纽,许多学校信息化负责人在选型时,往往陷入“功能越多……

    2026年6月7日
    4210
  • 独立服务器带宽和VPS带宽区别在哪?独立服务器带宽和VPS哪个好?

    独立服务器带宽与VPS带宽的核心区别在于资源的独占性与共享性,独立服务器提供的是物理层面的专属带宽通道,用户独享全部带宽资源,性能极其稳定且可控;而VPS(虚拟专用服务器)带宽是基于物理服务器虚拟化分割出来的,本质上是多用户共享底层物理带宽,存在资源争抢的风险,对于追求高性能、高并发及数据安全的企业级应用,独立……

    2026年3月7日
    10200
  • 多个IP怎么绑定同一个域名?,域名绑定多IP的方法有哪些?

    多个IP绑定同一个域名,核心实现方式是借助DNS的A记录/AAAA记录多值配置,配合智能DNS解析按来源线路或权重分配流量,这是行业共识,面对一台服务器扛不住流量、单点故障风险高、或者需要就近访问加速这些场景,把多个IP指向同一个域名是最直接的解药,但”怎么绑”和”怎么绑得好”是两个层次的问题,前者只需要在DN……

    2026年9月5日
    200
  • HTTP严格传输安全协议未响应是怎么回事?如何开启HSTS

    HTTP严格传输安全协议未响应通常意味着服务器未正确配置HSTS头,或客户端在首次访问时未建立安全连接,核心解决路径是检查服务器响应头、清理浏览器缓存并确保HTTPS强制跳转生效,在网络安全日益重要的今天,HTTP严格传输安全(HSTS)协议已成为网站标配,它像一位严格的保安,强制浏览器只通过加密的HTTPS通……

    2026年6月5日
    4000
  • IDC机房SLA协议是什么?IDC机房SLA服务等级协议标准是多少

    IDC机房SLA(服务等级协议)是衡量数据中心可靠性的核心标准,通常承诺99.9%至99.99%的可用性,若未达标需按约定比例赔偿,选择时需重点关注电力冗余、网络带宽及违约条款,在数字化转型的深水区,企业不再仅仅把服务器当作冷冰冰的硬件,而是将其视为业务连续性的生命线,当你的核心交易系统因为机房断电而瘫痪一分钟……

    2026年6月16日
    4800

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注