Nginx基于域名区分的多网站部署

生产环境几乎总是选择"基于域名区分 + 统一使用 80/443 端口"。来实现多网站部署

下面我从"为什么"、"两者可以同时使用"、"为什么 80/443 是标准"三个角度详细拆解。


一、总结结论

方式 端口 域名 好坏
基于域名 统一 80/443 多个域名 生产首选
基于端口 不同端口 一个 IP ❌ 不方便、非标
基于端口 + 域名 不同端口 多个域名 ✅ 特殊场景可用

二、"基于域名区分"为什么比"基于端口"更好?

✅ 基于域名(推荐)

nginx 复制代码
# 网站1
server {
    listen 80;
    server_name rent.example.com;
    root /opt/rentalhousing;
}

# 网站2
server {
    listen 80;
    server_name blog.example.com;
    root /var/www/blog;
}

用户访问:

bash 复制代码
http://rent.example.com   ✅
http://blog.example.com   ✅

特点:

  • 用户不用记端口
  • 可配 HTTPS(一个证书或不同证书)
  • 符合 Web 标准
  • 可无限扩展

❌ 基于端口(不推荐生产)

nginx 复制代码
# 网站1
server {
    listen 8080;
    server_name _;
    root /opt/rentalhousing;
}

# 网站2
server {
    listen 8081;
    server_name _;
    root /var/www/blog;
}

用户访问:

bash 复制代码
http://你的IP:8080   ❌ 用户必须记端口
http://你的IP:8081

问题:

  • 体验极差
  • 无法使用 HTTPS(端口混乱)
  • SEO / 分享链接难看
  • 浏览器 / 防火墙 / 代理容易出问题

三、端口区分 + 域名可以同时用吗?

可以,但几乎不会这么用。

示例:

nginx 复制代码
# 同一个域名通过不同端口访问不同应用
server {
    listen 80;
    server_name rent.example.com;
    root /opt/rentalhousing;
}

server {
    listen 8080;
    server_name rent.example.com;
    root /var/www/legacy;
}

问题:

  • 用户访问 http://rent.example.com:8080
  • 既不优雅、也不方便
  • 不如直接用不同域名或不同路径

👉 结论:技术上可行,实践中不推荐


四、为什么 80 / 443 端口这么特殊?

原因 说明
Web 标准 浏览器默认请求 80(HTTP) / 443(HTTPS)
用户无感 不需要输入 :3000:8080
HTTPS 统一 证书、HSTS 都基于 80/443
防火墙友好 几乎所有网络都放开 80/443

五、真实生产场景的对比(非常重要)

假设你有两个网站:

❌ 错误错误方案(端口区分)

nginx 复制代码
rent.com    → 80
blog.com    → 8080

用户访问:

bash 复制代码
http://rent.com     ✅
http://blog.com:8080 ❌

👉 没有人愿意访问 blog.com:8080


✅ 正确标准方案(域名区分)

nginx 复制代码
rent.com    → 80/443
blog.com    → 80/443

用户:

bash 复制代码
http://rent.com
http://blog.com

✅ 完美


六、什么时候应该用"端口区分"?

场景 是否合理
开发 / 测试环境 ✅ 非常常用
内部管理后台 ✅ 可接受
同一个 IP / 临时服务 ✅ 可以
对外生产服务 ❌ 极其不推荐

示例(合理使用端口):

nginx 复制代码
server {
    listen 80;
    server_name rent.example.com;
    root /opt/rentalhousing;
}

server {
    listen 3000;
    server_name rent.example.com;
    root /opt/rentalhousing/admin;
}

但更推荐用:

nginx 复制代码
location /admin {
    ...
}

七、一句话极简总结

域名负责"你是谁",端口负责"怎么连"。
生产环境:用域名 + 标准端口 80/443
实验环境:临时用端口没问题

相关推荐
新时代牛马25 分钟前
嵌入式网络完整篇:从LwIP/以太网驱动到 Linux netdev 与排障
linux·网络·php
前端世界42 分钟前
Linux服务器实战:NTP时间同步、SELinux权限与rsyslog日志管理,一次搞懂三大运维问题
linux·运维·服务器
Android系统攻城狮42 分钟前
Linux Gstreamer深度解析之gst_audio_converter_new调用流程与实战(二十)
linux·运维·服务器·gstreamer音视频·音视频进阶
海宇服务1 小时前
零信任架构实战:基于海宇对外投资历史查询服务构建自动化供应商准入网关
运维·人工智能·架构·自动化
上海云盾-小余1 小时前
BGP 高防底层原理:TCP 异常流量识别与清洗机制
运维·网络·tcp/ip
言乐62 小时前
Python加速器4跨境网络加速器
运维·服务器·开发语言·网络·python
天山@1233 小时前
PHP代码审计实验记录
网络安全·php·php代码审计
门思科技4 小时前
LoRaWAN 网络容量估算:一个 SX1302 网关到底能带多少设备
开发语言·网络·php
蓝速科技5 小时前
医院导诊 AI 数字人一体机场景适配与落地指南丨蓝速科技
运维·数据库·人工智能·科技·自然语言处理·技术分享
H_oRIZoN_6 小时前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机