插件窝 干货文章 Nginx如何配置多端口多域名访问

Nginx如何配置多端口多域名访问

配置 server 端口 index 570    来源:    2025-04-27

Nginx 多端口多域名访问配置指南

Nginx 可以通过配置多个 server 块来实现多端口多域名的访问。以下是详细的配置方法:

基础配置方法

1. 多域名配置(相同端口)

server {
    listen 80;
    server_name domain1.com www.domain1.com;

    root /var/www/domain1;
    index index.html;

    # 其他配置...
}

server {
    listen 80;
    server_name domain2.com www.domain2.com;

    root /var/www/domain2;
    index index.html;

    # 其他配置...
}

2. 多端口配置(相同域名)

server {
    listen 80;
    server_name example.com;

    root /var/www/example-80;
    index index.html;

    # 其他配置...
}

server {
    listen 8080;
    server_name example.com;

    root /var/www/example-8080;
    index index.html;

    # 其他配置...
}

完整的多端口多域名配置示例

# 域名1 - 端口80
server {
    listen 80;
    server_name site1.com www.site1.com;

    root /var/www/site1;
    index index.html index.php;

    access_log /var/log/nginx/site1.access.log;
    error_log /var/log/nginx/site1.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

# 域名1 - 端口443 (HTTPS)
server {
    listen 443 ssl;
    server_name site1.com www.site1.com;

    ssl_certificate /etc/ssl/certs/site1.crt;
    ssl_certificate_key /etc/ssl/private/site1.key;

    root /var/www/site1;
    index index.html index.php;

    # SSL 配置...
}

# 域名2 - 端口80
server {
    listen 80;
    server_name site2.net www.site2.net;

    root /var/www/site2;
    index index.html;

    access_log /var/log/nginx/site2.access.log;
    error_log /var/log/nginx/site2.error.log;
}

# 域名2 - 端口8080
server {
    listen 8080;
    server_name site2.net www.site2.net;

    root /var/www/site2-8080;
    index index.html;

    access_log /var/log/nginx/site2-8080.access.log;
    error_log /var/log/nginx/site2-8080.error.log;
}

最佳实践建议

  1. 配置文件组织

    • 将每个域名的配置放在单独的文件中(如 /etc/nginx/sites-available/
    • 使用 include 指令在主配置文件中包含这些文件
  2. 使用通配符和默认服务器

    server {
       listen 80 default_server;
       server_name _;
       return 444; # 关闭连接
    }
    
  3. 启用配置

    • 测试配置:nginx -t
    • 重载配置:nginx -s reloadsystemctl reload nginx
  4. 防火墙设置

    • 确保防火墙开放了所有需要使用的端口
    • 例如:sudo ufw allow 80/tcp, sudo ufw allow 443/tcp, sudo ufw allow 8080/tcp
  5. SSL配置

    • 为每个需要HTTPS的域名配置SSL证书
    • 考虑使用Let's Encrypt免费证书

常见问题解决

  1. 端口冲突

    • 检查端口是否被其他服务占用:sudo netstat -tulnp | grep :80
    • 修改冲突服务的端口或停止服务
  2. 域名解析问题

    • 确保域名已正确解析到服务器IP
    • 测试:ping domain.comnslookup domain.com
  3. 权限问题

    • 确保Nginx用户有权限访问网站目录
    • chown -R www-data:www-data /var/www/domain
  4. 日志检查

    • 查看错误日志定位问题:tail -f /var/log/nginx/error.log

通过以上配置,您可以灵活地为不同域名和端口设置不同的网站内容和访问规则。