插件窝 干货文章 nginx基于端口如何配置虚拟主机

nginx基于端口如何配置虚拟主机

端口 Nginx server port 859    来源:    2025-04-22

Nginx 基于端口的虚拟主机配置指南

基于端口的虚拟主机配置允许你在同一IP地址上通过不同端口提供不同的网站内容。以下是详细的配置方法:

基本配置步骤

  1. 编辑Nginx配置文件(通常在 /etc/nginx/nginx.conf/etc/nginx/sites-available/ 目录下)

  2. 为每个端口创建server块

server {
    listen 8080;  # 第一个端口
    server_name example.com;

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

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

server {
    listen 8081;  # 第二个端口
    server_name example.com;

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

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

完整配置示例

# 第一个虚拟主机 - 端口8080
server {
    listen 8080;
    server_name mydomain.com;

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

    root /var/www/port8080;
    index index.html index.htm;

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

# 第二个虚拟主机 - 端口8081
server {
    listen 8081;
    server_name mydomain.com;

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

    root /var/www/port8081;
    index index.html index.htm;

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

配置SSL端口虚拟主机

server {
    listen 8443 ssl;
    server_name secure.example.com;

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

    root /var/www/secure-site;
    index index.html;

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

注意事项

  1. 防火墙设置:确保防火墙允许访问配置的端口

    sudo ufw allow 8080
    sudo ufw allow 8081
    
  2. SELinux:如果使用SELinux,可能需要调整策略

    sudo semanage port -a -t http_port_t -p tcp 8080
    sudo semanage port -a -t http_port_t -p tcp 8081
    
  3. 测试配置

    sudo nginx -t
    
  4. 重启Nginx

    sudo systemctl restart nginx
    

常见问题解决

  1. 端口冲突:确保端口未被其他服务占用

    sudo netstat -tulnp | grep :8080
    
  2. 权限问题:确保Nginx用户有权限访问网站目录

    sudo chown -R www-data:www-data /var/www/port8080
    sudo chmod -R 755 /var/www/port8080
    
  3. 日志问题:如果日志文件未创建,手动创建并设置权限

    sudo touch /var/log/nginx/port8080.{access,error}.log
    sudo chown www-data:www-data /var/log/nginx/port8080.*.log
    

通过以上配置,你可以轻松实现基于端口的虚拟主机功能,在同一服务器上通过不同端口提供不同的网站内容。