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

Nginx配置同一端口不同域名或同一IP不同端口

以下是如何在Nginx中配置同一端口不同域名,以及同一IP不同端口的详细说明:


一、同一端口不同域名(基于名称的虚拟主机)

场景
通过80端口,让 example.comtest.com 指向不同的网站目录(如 /var/www/example/var/www/test)。

配置步骤

  1. 创建两个域名对应的网站目录:

    sudo mkdir -p /var/www/example
    sudo mkdir -p /var/www/test
    
  2. 编辑Nginx配置文件(通常位于 /etc/nginx/sites-available/ 或直接在 /etc/nginx/nginx.conf 中):

    # 配置 example.com
    server {listen 80;server_name example.com;  # 指定域名root /var/www/example;    # 网站根目录index index.html;         # 默认首页# 其他配置(如日志、反向代理等)access_log /var/log/nginx/example_access.log;error_log /var/log/nginx/example_error.log;
    }# 配置 test.com
    server {listen 80;server_name test.com;root /var/www/test;index index.html;access_log /var/log/nginx/test_access.log;error_log /var/log/nginx/test_error.log;
    }
    
  3. 测试配置并重启Nginx:

    sudo nginx -t        # 检查配置语法
    sudo systemctl reload nginx  # 或重启:sudo systemctl restart nginx
    

验证

  • 浏览器访问 http://example.comhttp://test.com,将分别显示对应目录的内容。

二、同一IP不同端口

场景
通过IP的8080端口提供静态页面,8081端口运行一个Node.js应用。

配置步骤

  1. 创建不同端口的服务目录:

    sudo mkdir -p /var/www/static
    sudo mkdir -p /var/www/nodeapp
    
  2. 配置Nginx监听不同端口:

    # 静态站点(8080端口)
    server {listen 8080;server_name localhost;  # 可省略或指定IProot /var/www/static;index index.html;
    }# Node.js应用代理(8081端口)
    server {listen 8081;server_name localhost;location / {proxy_pass http://localhost:3000;  # 假设Node.js运行在3000端口proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;}
    }
    
  3. 测试配置并重启Nginx:

    sudo nginx -t
    sudo systemctl reload nginx
    

验证

  • 访问 http://服务器IP:8080 查看静态页面。
  • 访问 http://服务器IP:8081 将请求转发到本地的Node.js应用。

三、关键注意事项

  1. 域名解析
    确保域名已正确解析到服务器IP(通过DNS设置或本地hosts文件临时测试)。

  2. 防火墙开放端口
    如果使用防火墙(如UFW或firewalld),需放行对应端口:

    sudo ufw allow 80/tcp
    sudo ufw allow 8080/tcp
    sudo ufw allow 8081/tcp
    
  3. 默认服务器
    如果请求未匹配任何 server_name,Nginx会使用第一个 server 块作为默认。可手动指定:

    listen 80 default_server;
    
  4. HTTPS扩展
    若需启用HTTPS,每个域名需单独配置SSL证书:

    server {listen 443 ssl;server_name example.com;ssl_certificate /path/to/example.crt;ssl_certificate_key /path/to/example.key;...
    }
    
  5. 日志分离
    建议为每个服务配置独立日志,便于排查问题。


通过以上配置,您可以灵活实现基于域名或端口的请求分发,适用于多站点托管或微服务架构。

http://www.xdnf.cn/news/7880.html

相关文章:

  • day32 python解释性库PDPbox
  • java 代码查重(三)常见的距离算法和相似度(相关系数)计算方法
  • 养生指南:五维升级健康生活
  • 23种经典设计模式(GoF设计模式)
  • 【苍穹外卖】Day01—Mac前端环境搭建
  • leetcode hot100刷题日记——7.最大子数组和
  • systick滴答定时器us延时和毫秒延时
  • 自动获取新版本 js 静态文件
  • 计算机网络-MPLS VPN报文转发
  • Redis面试题全面解析:从基础到底层实现
  • Python Seaborn 高级可视化指南
  • Datawhale 5月llm-universe 第4次笔记
  • 游戏引擎学习第302天:使用精灵边界进行排序
  • 化工行业质检LIMS 系统应用 原材料与成品质量追溯智能化方案
  • Hass-Panel - 开源智能家居控制面板
  • LeetCode222_完全二叉树的结点个数
  • vscode离线安装组件工具vsix
  • 《微服务架构设计模式》笔记
  • PyTorch中cdist和sum函数使用详解
  • 【图像大模型】深度解析RIFE: 基于中间流估计的实时视频插帧算法
  • 解决C#泛型类参数无法带参数实例化的问题
  • Speexx: Online Language Training Business Coaching Platform
  • 使用Tkinter写一个发送kafka消息的工具
  • DVWA-XSS
  • 网络流量分析工具ntopng的安装与基本使用
  • Java接口P99含义解析
  • 【713. 乘积小于 K 的子数组】
  • 目标检测 RT-DETR(2023)详细解读
  • Python 包管理工具uv常用场景使用指南
  • 在线视频下载利器,支持100多平台下载