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
实验环境:临时用端口没问题

相关推荐
ai小陈13 小时前
GPU服务器租用存储验收:检查点写入与磁盘吞吐实战
运维·服务器·人工智能·ai·ssh·gpu算力
有毒的教程16 小时前
VMware仅主机模式:物理机 ↔ 虚拟机 文件共享
运维
山岚的运维笔记18 小时前
ComfyUI NVIDIA安装教程:官方便携版下载+run_nvidia_gpu.bat启动,8G显存Windows实操
运维·服务器·windows·笔记·prompt·aigc·comfyui
海宇大数据18 小时前
零信任架构实战:基于海宇活体识别V步骤1构建自动化远程公证会话初始化网关
运维·人工智能·架构·自动化
lisanmengmeng19 小时前
Nagios邮件报警的配置
linux·运维·服务器
Ruiery19 小时前
Linux 6.6内核 CPU 深度解析(六):cpufreq
linux·运维·服务器
天远数科19 小时前
零信任架构实战:基于天远全能消金报告构建自动化消费分期网关
运维·人工智能·架构·自动化
硅基手札20 小时前
【linux内核专栏 08】时间与定时器
linux·运维·服务器
想做小南娘,发现自己是女生喵20 小时前
Linux之Ubuntu入门篇知识总结
linux·运维·服务器
life码农20 小时前
Nginx 配置允许指定 IP 段访问:从 192.168.1.1 到 192.168.1.124 及 /24 详解
网络·tcp/ip·nginx