虚拟服务器

虚拟服务器

Nginx 通过 server 块定义虚拟服务器。

虚拟服务器原理: 虚拟服务器是一种服务器配置方式,允许在同一台物理服务器上运行多个网站。Nginx 通过 server 块定义虚拟服务器,每个虚拟服务器可以监听不同的端口、IP 地址或服务器名称。

虚拟服务器优势

  • 节省成本:可以在同一台物理服务器上运行多个网站,节省服务器成本
  • 灵活配置:可以为每个虚拟服务器配置不同的参数
  • 易于管理:可以为每个虚拟服务器配置不同的日志和错误页面

基本配置

server {
    listen      80;
    server_name example.org www.example.org;
    ...
}

server {
    listen      80;
    server_name example.net www.example.net;
    ...
}

server {
    listen      80;
    server_name example.com www.example.com;
    ...
}

基本配置说明

  • listen 80:监听 80 端口
  • server_name:指定服务器名称

基本配置原理: Nginx 根据请求的 Host 头和端口选择虚拟服务器。当 Nginx 收到一个请求时,会根据请求的 Host 头和端口选择匹配的虚拟服务器。

监听端口和地址

server {
    listen      192.168.1.1:80;
    server_name example.org www.example.org;
    ...
}

监听端口和地址说明

  • listen 192.168.1.1:80:监听 192.168.1.1 的 80 端口

监听端口和地址原理: Nginx 根据请求的 IP 地址和端口选择虚拟服务器。当 Nginx 收到一个请求时,会根据请求的 IP 地址和端口选择匹配的虚拟服务器。

基于名称的虚拟服务器

server {
    listen      80;
    server_name example.org www.example.org;
    ...
}

基于名称的虚拟服务器说明

  • server_name:指定服务器名称

基于名称的虚拟服务器原理: Nginx 根据请求的 Host 头选择虚拟服务器。当 Nginx 收到一个请求时,会根据请求的 Host 头选择匹配的虚拟服务器。

基于IP的虚拟服务器

server {
    listen      192.168.1.1:80;
    server_name example.org www.example.org;
    ...
}

基于IP的虚拟服务器说明

  • listen 192.168.1.1:80:监听 192.168.1.1 的 80 端口

基于IP的虚拟服务器原理: Nginx 根据请求的 IP 地址和端口选择虚拟服务器。当 Nginx 收到一个请求时,会根据请求的 IP 地址和端口选择匹配的虚拟服务器。

默认服务器

server {
    listen      80 default_server;
    server_name example.net www.example.net;
    ...
}

默认服务器说明

  • default_server:指定默认服务器

默认服务器原理: 当 Nginx 收到一个请求时,如果没有匹配的虚拟服务器,会使用默认服务器处理请求。

最佳实践

  1. 使用基于名称的虚拟服务器:使用基于名称的虚拟服务器,节省 IP 地址
  2. 配置默认服务器:配置默认服务器,处理未匹配的请求
  3. 使用通配符:使用通配符匹配多个服务器名称
  4. 使用正则表达式:使用正则表达式匹配复杂的服务器名称
  5. 监听多个端口:监听多个端口,提高灵活性