虚拟机部署Nginx的详细步骤可以概括为:准备Linux虚拟机、安装Nginx、放行防火墙与SELinux、验证访问、按需配置静态站点或反向代理。 用VMware或VirtualBox开一台CentOS/Ubuntu虚拟机,再通过SSH操作,是最稳妥的练手路径。
虚拟机部署Nginx详细步骤:先建一台干净的Linux虚拟机
新手如何在Linux虚拟机安装Nginx:系统选择与远程连接
虚拟机软件可选 VMware Workstation Player 或 VirtualBox,个人学习场景通常免费,系统建议选 CentOS 7/8 Stream 或 Ubuntu Server 22.04/24.04,最小化安装即可,资源配置不必夸张:1核1G可跑通,2核2G更顺畅,磁盘20GB起步。
安装系统时注意三点:
- 网络模式:桥接模式可直接从宿主机访问虚拟机IP;NAT模式需要做端口转发;Host-Only模式适合纯内网实验。
- 用户权限:创建普通用户并加入sudo组,或直接使用root做练习,生产环境不建议长期用root。
- 快照:装完系统先打一个快照,后续改坏Nginx配置可快速回滚。
装好后登录虚拟机,执行 ip addr 查看IP,宿主机终端用 ssh 用户名@虚拟机IP 连接,若连不上,先检查虚拟机网络模式和宿主机防火墙。
安装Nginx:CentOS与Ubuntu命令
CentOS 7/8 Stream
sudo yum install epel-release -y sudo yum install nginx -y sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl status nginx
CentOS 8及更高版本可将 yum 换成 dnf,看到 active (running) 说明服务已启动。
Ubuntu 22.04/24.04
sudo apt update sudo apt install nginx -y sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl status nginx
Ubuntu安装后通常会自动启动,若没有,用上述 systemctl start nginx 手动拉起。
放行端口与处理SELinux限制
CentOS默认启用firewalld,需要放行HTTP和HTTPS:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
Ubuntu常用ufw:
sudo ufw allow 'Nginx Full' sudo ufw enable sudo ufw status
CentOS还有SELinux,执行 getenforce 查看状态,若为Enforcing且访问异常,可临时设为宽容模式:
sudo setenforce 0
永久修改需编辑 /etc/selinux/config,将 SELINUX=enforcing 改为 permissive 或 disabled,重启生效,生产环境更推荐用 semanage 精细放行,而不是直接关闭。
验证访问:curl和浏览器
在虚拟机内执行:
curl -I http://localhost curl -I http://127.0.0.1 ss -tlnp | grep :80
应返回 HTTP/1.1 200 OK 或 301/302,看到 0.0.0:80 或 ::80 说明Nginx正在监听所有网卡,浏览器访问 http://虚拟机IP,出现Nginx欢迎页即部署成功,据Nginx官方文档,默认站点目录通常是 /usr/share/nginx/html,主配置是 /etc/nginx/nginx.conf。
虚拟机部署Nginx详细配置:静态站点与反向代理
静态站点路径与server块
CentOS可在 /etc/nginx/conf.d/ 下新建 demo.conf:
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Ubuntu可在 /etc/nginx/sites-available/ 新建配置,再软链到 sites-enabled/,改完执行:
sudo nginx -t sudo systemctl reload nginx
nginx -t 返回 syntax is ok 和 test is successful 才能重载。
反向代理示例
把请求转给本机8080端口的应用:
location /api/ { proxy_pass http://127.0.0.1:8080/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
注意 proxy_pass 末尾斜杠会影响路径拼接,日志在 /var/log/nginx/access.log 和 /var/log/nginx/error.log,可用 tail -f 实时查看。
CentOS虚拟机部署Nginx和本机安装有什么区别
| 对比项 | 虚拟机部署 | 本机直接安装 |
|---|---|---|
| 环境隔离 | 强,独立系统 | 弱,易污染宿主机 |
| 快照回滚 | 支持 | 不方便 |
| 资源开销 | 较高 | 低 |
| 迁移复制 | 可整机拷贝 | 依赖本机环境 |
| 适用场景 | 学习、测试、模拟服务器 | 临时调试 |
行业共识认为,Nginx作为反向代理和静态资源服务器,稳定性和并发处理能力已在大规模生产环境中得到验证,新手在虚拟机里折腾配置,比直接改宿主机更安全。
虚拟机部署Nginx后无法访问怎么办:按顺序排查
遇到浏览器打不开,不要急着重装,按下面顺序查:
- 查IP:
ip addr确认虚拟机IP,宿主机ping 虚拟机IP。 - 查服务:
systemctl status nginx是否running。 - 查监听:
ss -tlnp | grep :80是否有进程监听80。 - 查防火墙:
firewall-cmd --list-all或ufw status。 - 查SELinux:
getenforce,Enforcing时看/var/log/audit/audit.log。 - 查网络模式:NAT模式需在VMware/VirtualBox做80端口转发。
- 查云安全组:若虚拟机在云上,入方向要放行80/443。
- 查日志:
tail -f /var/log/nginx/error.log通常有直接线索。
云服务器和本地虚拟机部署Nginx哪个好
本地虚拟机适合练手、内网测试、离线实验,成本主要是宿主机资源,云服务器适合对外提供访问,有公网IP、安全组、快照和监控,但需要按配置、带宽、磁盘付费,若只是学Nginx配置,本地虚拟机更划算;若要上线网站,云服务器更省心。
虚拟机部署Nginx需要多少钱
Nginx本身是开源软件,软件许可成本为零,本地虚拟机用VMware Player或VirtualBox,通常也不产生额外费用,云服务器则按配置和时长计费,入门配置费用较低,但公网带宽、快照存储、负载均衡可能单独计费,近年来,主流云厂商提供按量付费和包月模式,新手可先用低配实例测试,再按流量升级。
Q&A:虚拟机部署Nginx常见问题
虚拟机部署Nginx后,为什么curl localhost正常但外部访问不了?
常见原因是防火墙、SELinux、云安全组或虚拟机网络模式。curl localhost 走回环网卡,不受外部放行规则影响;外部访问要经过宿主机或云平台网络策略,先确认 ss -tlnp 监听的是 0.0.0:80,再逐项检查firewalld、ufw、SELinux和NAT端口转发。
上海地区虚拟机部署Nginx需要备案吗?
仅通过内网IP访问不需要备案,若使用中国大陆云服务器绑定公网域名并提供网站服务,通常需要ICP备案,据工信部公开信息,备案要求与服务器接入商和网站内容相关,上海地区同样遵循大陆统一备案规则,纯测试环境可用内网或临时公网IP,不绑定域名。
Docker与虚拟机部署Nginx对比,新手选哪个?
Docker启动快、镜像一致、资源占用低,适合快速部署和微服务场景;虚拟机隔离完整、贴近传统服务器,适合学习系统配置、防火墙、SELinux和日志排查,新手若目标是理解Nginx运行环境和排错逻辑,先用虚拟机部署Nginx更直观;若目标是快速交付,Docker镜像配合挂载配置和端口映射效率更高。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/766824.html





