京东云服务器推荐配置、多种配置选择,满足不同业务需求!

热门推荐

⭐ 稳定入门选择

配置:2核2G/5M

适用场景:个人站点 / 轻量应用

特点:性价比高,稳定可靠

¥19/月
立即购买
流量友好

☁️ 轻量云主机

配置:2核4G 5M

适用场景:小型业务 / 博客 / 测试环境

特点:流量友好,性能均衡

¥149/年
立即购买
高性能

💻 云服务主机

配置:4核16G 8M

适用场景:中小型服务 / 多并发场景

特点:充足内存与带宽,性能强劲

¥750/年
立即购买
新人专享

🎁 新人福利

新人访问 → 点击 → 最新活动

可获取 3000元 礼券

立即领取
服务端 / Nginx 教程 / 虚拟机配置
nginx-processing-requests
Nginx 虚拟主机 Nginx 反向代理

Nginx 处理请求

我们可以指定多个虚拟服务器,每个服务器由一个server {}上下文描述。

server {
  listen      *:80 default_server;
  server_name xsc123.com;

  return 200 "Hello from javatpoint.co";
}

server {
  listen      *:80;
  server_name nikita.co;

  return 200 "Hello from nikita.co";
}

server {
  listen      *:81;
  server_name deep.co;

  return 200 "Hello from deep.co";
}

上面的例子中,nginx 将检查 listen 指令以测试哪个虚拟服务器正在侦听给定的 IP: port组合,然后检查Host 标头中的域名匹配 server_name 指令的值。

Nginx 按以下顺序选择虚拟服务器:

  • IP: port 上的服务器列表,带有匹配的指令,如 server_name
  • P: port 上的服务器列表,带有 default_server 标志;
  • P: port 上的服务器列表,第一个已定义。
  • 如果没有匹配项,则拒绝连接。

从上面的例子中,输出将是:

Request to nikita.co:80     => "Hello from nikita.co"
Request to www.nikita.co:80 => "Hello from xsc123.com.co"
Request to deep.co:80     => "Hello from xsc123.com.co"
Request to deep.co:81     => "Hello from nikita.co"
Request to nikita.co:81     => "Hello from deep.co"

server_name 指令

server_name 指令用于接受多个值;它还用于处理通配符匹配和正则表达式。

server_name xsc123.com; # 完全符合  
server_name *.xsc123.com; # 通配符匹配  
server_name xsc123.com.*; # 通配符匹配  
server_name ~^[ 0 - 9 ]*\.xsc123.com\.com$; # 正则匹配  

如果有任何歧义,那么 nginx 使用以下顺序:

  • 完全匹配名称;
  • 以星号开头的最长通配符名称,例如“*examples.org”,
  • 以星号结尾的最长通配符名称,例如“mail.*”;
  • 第一个匹配的正则表达式。

Nginx 将存储三个哈希表:确切名称、以星号开头的通配符和以星号结尾的通配符。如果结果不在上面声明的表中,则将按顺序测试正则表达式。

server_name .xsc123.com;

它是以下的缩写:

server_name  xsc123.com.co  www.xsc123.com.co  *.xsc123.com.co;

只有一个区别:.xsc123.com.co 存储在第二个表中,这意味着它比显式声明慢一点。

listen 指令

在大多数情况下,我们会看到 listen 指令接受 IP: 端口值。

listen 127.0.0.1:80;  
listen 127.0.0.1;    # port :80 is used by default  
  
listen *:81;  
listen 81;           # all ips are used by default  
  
listen [::]:80;      # IPv6 addresses  
listen [::1];        # IPv6 addresses  

但是,也可以指定 UNIX 域的套接字:

listen unix:/var/run/nginx.sock;  

甚至我们可以使用主机名:

listen localhost:80;  
listen netguru.co:80;  

如果指令不存在,则使用*:80

Nginx 虚拟主机 Nginx 反向代理
上一篇:Nginx 虚拟主机
下一篇:无