我们可以指定多个虚拟服务器,每个服务器由 server {} 上下文描述。
server { listen *:80 default_server; server_name javatpoint.co; 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了解如何处理传入的请求。首先,nginx将检查listen指令以测试哪个虚拟服务器在给定的IP:端口组合上进行监听。然后针对存储服务器域名的Host标头测试 server_name指令中的值。
Nginx按以下顺序选择虚拟服务器:
在上面的示例中,输出将是:
Request to nikita.co:80 => "Hello from nikita.co" Request to www.nikita.co:80 => "Hello from javatpoint.co" Request to deep.co:80 => "Hello from javatpoint.co" Request to deep.co:81 => "Hello from nikita.co" Request to nikita.co:81 => "Hello from deep.co"
server_name指令用于接受多个值。它也用于处理通配符匹配和正则表达式。
server_name javatpoint.co www.javatpoint.co; # exact match server_name *.javatpoint.co; # wildcard matching server_name javatpoint.*; # wildcard matching server_name ~^[0-9]*\.javatpoint\.co$; # regexp matching
如果有任何歧义,则nginx使用以下顺序:
Nginx将存储三个哈希表:确切名称,以星号开头的通配符和以星号结尾的通配符。如果结果不在上述表中,则将按顺序测试正则表达式。
链接:https://www.learnfk.comhttps://www.learnfk.com/nginx/nginx-processing-requests.html
来源:LearnFk无涯教程网
server_name .javatpoint.co;
它是以下内容的缩写:
server_name javatpoint.co www.javatpoint.co *.javatpoint.co;
仅有一个区别:.javatpoint.co存储在第二个表中,这意味着它比显式声明要慢一些。
在大多数情况下,我们将看到listen指令接受IP:port值。
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 。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)