Nginx的虚拟主机配置(一)

前言

虚拟主机指的是在同一台物理服务器中发布多个Web站点或应用,Nginx的虚拟主机可以支持三种方式来进行配置。

  1. 基于不同端口配置多个虚拟主机 (端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台)
  2. 基于不同域名配置多个虚拟主机 (server_name来区分虚拟主机——应用:外部网站)
  3. 基于不同ip配置多个虚拟主机, (一个助教主机绑定多个ip地址)

基于端口的虚拟主机

基于端口的虚拟主机在生产环境中不是很常见,基于端口配置不同的虚拟主机步骤如下:

  1. 创建虚拟主机不同站点的站点目录
    因为需要三个用于测试的虚拟主机,所以需要创建三个站点目录

1695283365988.png

分别在对应的站点目录中创建index.html并写入测试页面。

1695283596528.png

  1. 配置监听不同端口的 server

    server {
            #监听端口号IPv4
            listen       81;
            #监听端口号IPv6
          # listen       [::]:81;
            #主机名 (IP)
            server_name  localhost;
            #站点根目录(网站程序存放目录)
            root         /var/www/html/81;
            #默认服务器块的加载配置文件
            include /etc/nginx/default.d/*.conf;
    
            error_page 404 /404.html;
            location = /404.html {
            }
    
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            }
        }  
        server {
            #监听端口号IPv4
            listen       82;
            #监听端口号IPv6
          # listen       [::]:82;
            #主机名 (IP)
            server_name  localhost;
            #站点根目录(网站程序存放目录)
            root         /var/www/html/82;
            #默认服务器块的加载配置文件
            include /etc/nginx/default.d/*.conf;
    
            error_page 404 /404.html;
            location = /404.html {
            }
    
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            }
        }
        server {
            #监听端口号IPv4
            listen       83;
            #监听端口号IPv6
          # listen       [::]:83;
            #主机名 (IP)
            server_name  localhost;
            #站点根目录(网站程序存放目录)
            root         /var/www/html/83;
            #默认服务器块的加载配置文件
            include /etc/nginx/default.d/*.conf;
    
            error_page 404 /404.html;
            location = /404.html {
            }
    
            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            }
        }
  2. 检查语法并重新加载Nginx

    nginx -t
    #修改配置文件后必须检查语法,显示语法OK则表示正常
    nginx -s reload
    #重新加载配置文件

    1695284164997.png

  3. 查看测试页面

1695284491539.png
1695284515871.png
1695284572892.png
81,82,83端口都可以打开对应的站点,说明基于端口的虚拟主机配置成功。如果出现无法访问的情况,需要检查服务器的防火墙是否放行了对应端口,如果是云服务器需要检查云服务器的安全组是否放行对应端口。