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/nginx%e9%85%8d%e7%bd%ae%e8%99%9a%e6%8b%9f%e6%9c%ba%e5%90%8e%e5%a6%82%e4%bd%95%e8%ae%be%e7%bd%ae%e5%9f%9f%e5%90%8d%e8%ae%bf%e9%97%ae%ef%bc%8c%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e9%85%8d%e7%bd%ae/

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

相关推荐

  • iOS虚拟机utm怎么用,操作步骤有哪些?

    UTM是iOS上目前最值得尝试的免费虚拟机,通过它你可以在iPhone或iPad上运行Windows、Linux系统,但前提是你的设备支持虚拟化且选对了系统镜像,下文从安装前的准备工作开始,逐步拆解创建虚拟机、安装系统的完整流程,最后给出性能优化和常见问题解决方案,iOS虚拟机怎么用:UTM的核心概念和安装前准……

    2026年9月7日
    400
  • 海外服务器线路怎么选?海外服务器哪条线路速度快

    选择海外服务器线路的核心准则在于“业务场景匹配度”与“网络质量稳定性”,而非单纯追求低价,最优的海外服务器线路选择建议,必须基于业务受众的地理分布、访问延迟容忍度以及数据安全合规要求进行决策,直连专线或优化线路是保障跨境业务稳定运行的首选方案, 对于追求极致访问速度的企业,CN2 GIA线路是当前市场的标杆;而……

    2026年3月3日
    12200
  • 媒体流服务器到底有哪些,媒体流服务器哪个好用

    媒体流服务器没有万能答案,选型取决于你的传输协议、并发规模和预算——开源阵营里SRS、ZLMediaKit、MediaMTX是主流,商业方案看Wowza和Nimble,云服务则优先考虑国内大厂的直播产品,先用一张表看清主流媒体流服务器很多朋友一上来就问“哪个服务器最好”,实际上最好这个词在流媒体领域不存在,只有……

    2026年10月18日
    000
  • Magento建站服务器要求高吗?Magento服务器配置推荐

    Magento建站对服务器的核心要求在于高性能CPU、大内存(建议16GB以上)以及SSD存储,推荐采用Linux系统配合Nginx反向代理与Varnish缓存架构,以确保高并发下的稳定运行,很多人误以为建站就像搭积木,买个便宜主机就能搞定,但对于Magento这种重量级电商系统来说,服务器配置直接决定了店铺的……

    2026年6月22日
    1800
  • 如何用HTML开发APP?html开发app需要学什么

    使用HTML开发App并非“写网页”,而是通过混合架构将Web技术封装进原生容器,以较低成本实现跨平台应用,适合对性能要求不极端、追求快速迭代的中小型项目,很多开发者初入行时容易陷入误区,认为HTML5就是简单的网页制作,或者认为用它做App就是给网页套个壳,现代混合开发(Hybrid App)技术已经非常成熟……

    2026年6月7日
    17200
  • access数据库实验报告怎么写?access数据库实验报告模板

    Access数据库实验报告的核心在于清晰展示从需求分析到数据维护的全流程,重点突出查询逻辑与窗体交互的设计思路,而非单纯罗列操作步骤,在2026年的数字化办公环境中,尽管云数据库和大型关系型数据库管理系统(RDBMS)占据了企业级市场的主导地位,但Access凭借其轻量级、易上手以及与Office生态系统的无缝……

    2026年7月3日
    600
  • 服务器带宽扩展难不难?服务器带宽升级流程复杂吗

    服务器带宽扩展本身的技术操作难度并不高,真正的难点在于成本控制、业务无缝切换以及对未来流量的精准预判,在我经手过的数百个服务器运维案例中,绝大多数管理员在面对带宽瓶颈时,首先感到的不是技术上的无力,而是对架构扩展性与成本效益平衡的焦虑,只要规划得当,带宽扩展完全可以做到像“插拔USB”一样平滑,反之则可能导致业……

    2026年3月4日
    10500
  • 互联网专线接入实施方案是什么?企业宽带专线申请流程详解

    互联网专线接入的核心在于通过独享带宽和固定IP实现企业级稳定连接,其实施关键在于前期网络勘测、合规备案审批及后期SLA运维监控,相比家庭宽带,专线虽成本较高但能保障业务连续性,在数字化转型的深水区,网络不再仅仅是“能上网”的工具,而是企业业务的神经中枢,许多中小企业在从家庭宽带转向企业级连接时,往往陷入价格迷雾……

    2026年6月2日
    6500
  • 阿拉丁服务器有哪些,哪个配置性价比更高?

    百度阿拉丁搜索应用平台的搜索接入服务器、阿拉丁小程序平台的云端API服务器、阿拉丁神灯智能硬件的本地边缘计算服务器、以及金融信息服务场景下的数据交易服务器,不同场景的服务器在部署方式、资源规格和运维逻辑上差异明显,选择时需先明确你接触到的阿拉丁具体指哪个产品线,阿拉丁应用服务器和web服务器哪个好很多用户纠结阿……

    2026年10月2日
    100
  • 广州100g高防ddos服务器如何选择?哪家性价比高又稳定

    选择广州100g高防DDoS服务器的核心在于精准匹配“防御峰值、机房线路、硬件配置与售后响应”四大要素,而非单纯追求高参数,企业应优先考虑具备T级带宽储备、接入BGP智能多线网络且拥有本地化运维团队的IDC服务商,这能确保在遭受大规模流量攻击时,业务不仅防得住,还能保持低延迟访问,简米科技建议,真正的防御能力不……

    2026年4月1日
    8400

发表回复

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