当前位置: 首页 > news >正文

五十六、【Linux系统nginx服务】nginx虚拟主机实现

虚拟主机技术全景图

Nginx虚拟主机
基于域名
基于IP
基于端口
多域名共享IP
Host头识别
SEO友好
独立IP服务
直接IP访问
SSL证书绑定
端口区分服务
内部服务隔离
临时环境部署

虚拟主机类型深度对比

特性基于域名基于IP基于端口最佳适用场景
IP资源需求1个IP多个IP1个IP域名型:IP资源紧张 IP型:需要独立IP服务
访问方式域名访问IP直接访问IP:端口访问IP型:内部系统直接调用
SSL支持支持SNI原生支持支持IP型:传统SSL证书绑定
SEO影响无影响无独立域名需处理端口规范域名型:公开网站首选
配置复杂度★★☆☆☆★★★☆☆★★☆☆☆端口型:测试环境快速部署
维护成本端口型:临时服务
安全性依赖域名解析直接暴露IP端口可隐藏IP型:减少DNS依赖风险
典型应用企业官网集群独立SSL服务开发测试环境按需求选择

功能作用详解

1. 基于域名的虚拟主机

功能说明

  • 同一IP和端口(80)服务多个网站
  • 通过HTTP请求头中的Host字段区分站点
  • 需配置DNS解析或本地hosts文件

应用场景

  • 单服务器托管多个域名网站
  • 节省IP地址资源

2. 基于IP的虚拟主机

功能说明

  • 每个网站使用独立的IP地址
  • 不依赖域名解析,直接通过IP访问
  • 需服务器配置多个IP地址

应用场景

  • 需要直接IP访问的服务
  • SSL证书绑定IP的特殊需求

3. 基于端口的虚拟主机

功能说明

  • 同一IP通过不同端口提供多服务
  • 需在URL中显式指定端口号
  • 需防火墙开放对应端口

应用场景

  • 测试环境运行多个服务
  • 内部管理接口隔离
  • HTTP服务与API服务分离

一、基础环境准备

# 安装Nginx
[root@localhost ~]# yum install nginx -y# 创建站点目录
[root@localhost ~]# mkdir -p /var/www/{domain,ip,port}# 创建测试页面
[root@localhost ~]# echo "Domain-based Virtual Host" > /var/www/domain/index.html
[root@localhost ~]# echo "IP-based Virtual Host" > /var/www/ip/index.html
[root@localhost ~]# echo "Port-based Virtual Host" > /var/www/port/index.html

二、三种虚拟主机配置

1. 基于域名 (example.com / test.com)

# 创建域名配置
[root@localhost ~]# cat > /etc/nginx/conf.d/domain.conf <<EOF
server {listen 80;server_name example.com;root /var/www/domain;index index.html;
}
server {listen 80;server_name test.com;root /var/www/domain;  # 同一服务器不同内容目录
}
EOF

2. 基于IP (192.168.1.100 / 192.168.1.200)

# 添加临时IP地址(永久IP需修改网络配置)
[root@localhost ~]# ip addr add 192.168.1.200/24 dev eth0# 创建IP配置
[root@localhost ~]# cat > /etc/nginx/conf.d/ip.conf <<EOF
server {listen 192.168.1.100:80;root /var/www/ip;index index.html;
}
server {listen 192.168.1.200:80;root /var/www/ip;  # 同目录演示
}
EOF

3. 基于端口 (8080 / 8081)

# 创建端口配置
[root@localhost ~]# cat > /etc/nginx/conf.d/port.conf <<EOF
server {listen 8080;server_name localhost;root /var/www/port;index index.html;
}
server {listen 8081;server_name localhost;root /var/www/port;  # 同目录演示
}
EOF# 开放防火墙端口
[root@localhost ~]# firewall-cmd --add-port={8080,8081}/tcp --permanent
[root@localhost ~]# firewall-cmd --reload

4. 重载Nginx配置

[root@localhost ~]# nginx -t  # 测试配置
[root@localhost ~]# systemctl reload nginx

三、验证配置

# 域名测试(需配置hosts或DNS解析)
[root@localhost ~]# curl -H "Host: example.com" http://localhost
[root@localhost ~]# curl -H "Host: test.com" http://localhost# IP测试
[root@localhost ~]# curl http://192.168.1.100
[root@localhost ~]# curl http://192.168.1.200# 端口测试
[root@localhost ~]# curl http://localhost:8080
[root@localhost ~]# curl http://localhost:8081

四、命令总结表格

演示命令功能描述关键参数说明
server_name example.com;设置域名虚拟主机在80端口区分不同域名
listen 192.168.1.100:80;设置IP虚拟主机绑定指定IP地址
listen 8080;设置端口虚拟主机通过端口区分站点
firewall-cmd --add-port=8080/tcp开放防火墙端口允许外部访问非标准端口
curl -H "Host: example.com" http://localhost域名访问测试模拟域名请求

五、故障排查命令

命令功能
nginx -t检查配置文件语法
journalctl -u nginx查看服务日志
`ss -tulnpgrep nginx`
curl -Iv http://example.com跟踪请求头

六、性能优化与安全加固

优化方向域名型IP型端口型实施建议
连接复用keepalivekeepalivekeepalive统一开启
缓存策略按域名独立按IP独立按端口独立独立缓存区
压缩优化按内容类型按内容类型按内容类型文本资源必开
访问控制域名白名单IP白名单IP+端口控制多层防护
日志分割按域名分割按IP分割按端口分割便于审计
http://www.dtcms.com/a/320568.html

相关文章:

  • [linux] Linux:一条指令更新DDNS
  • GPT-OSS重磅开源:当OpenAI重拾“开放”初心
  • 面试题:bable,plugin,loader,还有在打包过程中.vue/.react文件是如何转化为.js文件的
  • linux mysql 8.X主从复制
  • 聚焦2025世界机器人大会:全尺寸人形交互陪伴机器人GR-3有哪些亮点值得关注?
  • React 原生部落的生存现状:观察“Hooks 猎人“如何用useEffect设陷阱反被依赖项追杀
  • vscode EIDE 无法编译,提示 “文件名、目录名或卷标语法不正确;
  • 论文精读(二)| 开源软件漏洞感知技术综述
  • spring.cache.type=SIMPLE详解
  • 2025年国内iPaaS平台精选
  • Docker搭建Jenkins实现自动部署:快速高效的持续集成之道!
  • 汉明码:从原理到实现的深度解析
  • 【软考中级网络工程师】知识点之路由器配置全解析
  • 微信小程序miniprogram-ci 模块实现微信小程序的自动上传功能
  • 分布式膛压应变测量系统
  • CSS BFC
  • Linux初级阶段性练习
  • Chrome与Firefox浏览器安全运维配置命令大全:从攻防到优化的专业实践
  • 内网穿透原理与部署实战指南:从理论到企业级应用
  • React Hooks 完全指南:从概念到内置 Hooks 全解析
  • C++-->stl: list的使用
  • 为什么输入 URL 后会显示页面?HTTP 协议的 “幕后操作”
  • docker缓存目录转移设置和生效过程
  • 稿定科技:多云架构下的 AI 存储挑战与 JuiceFS 实践
  • 负氧离子监测站:守护清新空气的科技卫士
  • 从零掌握 Java AWT:原理、实战与性能优化
  • 用JOIN替代子查询的查询性能优化
  • 《前端60问:从设备判断到性能优化全解》
  • 高校合作 | 世冠科技联合普华、北邮项目入选教育部第二批工程案例
  • Emacs 折腾日记(二十九)—— 打造C++ IDE