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

 更新时间:2026年05月19日 09:27:02   作者:江上清风山间明月  
本文介绍了在生产环境中多网站部署时选择基于域名区分+统一使用80/443端口的优势,并解释了为什么基于端口区分方式不推荐用于生产环境,同时,还探讨了为什么80/443端口在Web服务中具有特殊地位,以及在不同场景下如何合理使用端口区分方式,需要的朋友可以参考下

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

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

一、总结结论

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

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

基于域名(推荐)

# 网站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;
}

用户访问:

http://rent.example.com   ✅
http://blog.example.com   ✅

特点:

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

基于端口(不推荐生产)

# 网站1
server {
    listen 8080;
    server_name _;
    root /opt/rentalhousing;
}

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

用户访问:

http://你的IP:8080   ❌ 用户必须记端口
http://你的IP:8081

问题:

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

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

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

示例:

# 同一个域名通过不同端口访问不同应用
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

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

假设你有两个网站:

  • 系统:rent.com
  • 博客:blog.com

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

rent.com    → 80
blog.com    → 8080

用户访问:

http://rent.com     ✅
http://blog.com:8080 ❌

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

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

rent.com    → 80/443
blog.com    → 80/443

用户:

http://rent.com
http://blog.com

完美

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

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

示例(合理使用端口):

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

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

但更推荐用:

location /admin {
    ...
}

七、一句话极简总结

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

以上就是Nginx基于域名区分的多网站部署的详细内容,更多关于Nginx多网站部署的资料请关注脚本之家其它相关文章!

相关文章

  • Nginx rewrite跳转应用场景详解

    Nginx rewrite跳转应用场景详解

    这篇文章主要介绍了Nginx rewrite跳转应用场景详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • 如何利用nginx通过正则拦截指定url请求详解

    如何利用nginx通过正则拦截指定url请求详解

    这篇文章主要介绍了如何利用nginx通过正则拦截指定url请求的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用nginx具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-05-05
  • nginx对http请求处理的各个阶段详析

    nginx对http请求处理的各个阶段详析

    这篇文章主要给大家介绍了关于nginx对http请求处理的各个阶段分析的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Nginx配置超时时间的排查步骤

    Nginx配置超时时间的排查步骤

    在 Nginx 中设置了 keepalive_timeout、client_header_timeout 和 client_body_timeout 后仍然不起作用,所以本文给大家介绍了Nginx配置超时时间的排查步骤,并有相关的代码示例供大家参考,需要的朋友可以参考下
    2024-11-11
  • nginx反向代理配置400,404,502等状态的自定义页面问题

    nginx反向代理配置400,404,502等状态的自定义页面问题

    这篇文章主要介绍了nginx反向代理配置400,404,502等状态的自定义页面问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • nginx expires控制页面缓存

    nginx expires控制页面缓存

    expires 指令可以控制 HTTP 应答中的“Expires ”和“ Cache-Control ”的头标(起到控制页面缓存的作用)
    2013-01-01
  • Nginx端口映射配置方法

    Nginx端口映射配置方法

    这篇文章主要介绍了Nginx端口映射配置方法和多端口映射,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Nginx启动时80端口被占用的问题解决

    Nginx启动时80端口被占用的问题解决

    本文主要介绍了在启动Nginx时遇到80端口被占用的问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • nginx如何限制访问某些url

    nginx如何限制访问某些url

    这篇文章主要关于介绍了nginx如何限制访问某些url的相关资料,nginx是非常出色web服务器,对于静态文件的处理非常高效,同时它的代理转发功能和其它后台服务器搭配起来也非常的简单高效,需要的朋友可以参考下
    2023-08-08
  • nginx禁止dedecms目录php执行权限

    nginx禁止dedecms目录php执行权限

    nginx禁止dedecms目录php执行权限,找到配置fastcgi.conf文件,一般在/usr/local/nginx/conf/下面,修改如下
    2014-01-01

最新评论