> 技术文档 > Nginx配置同一端口不同域名或同一IP不同端口_nginx同一个端口不同域名如何配置

Nginx配置同一端口不同域名或同一IP不同端口_nginx同一个端口不同域名如何配置

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


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

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

配置步骤

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

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

    # 配置 example.comserver { 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.comserver { 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/staticsudo mkdir -p /var/www/nodeapp
  2. 配置Nginx监听不同端口:

    # 静态站点(8080端口)server { listen 8080; server_name localhost; # 可省略或指定IP root /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 -tsudo systemctl reload nginx

验证

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

三、关键注意事项

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

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

    sudo ufw allow 80/tcpsudo ufw allow 8080/tcpsudo 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. 日志分离
    建议为每个服务配置独立日志,便于排查问题。


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