nginx 处理 request 的过程 (how nginx processes a request)
访问量: 2843
refer to http://nginx.org/en/docs/http/request_processing.html#simple_php_site_configuration
Name based virtual servers
会根据request header中的 server name来配对,例如, 给定配置文件:
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;
...
}
如果我们请求 example.come/lala , 那么,就会被匹配到第三个配置项目上。
如果啥也没指定,直接 localhost:80, 那么,就会被匹配到 default site上(通常是第一个)。
这个是配置default site的例子:
server {
listen 80 default_server;
server_name example.net www.example.net;
...
}
如果希望阻止用户访问 localhost:80呢? 按照下面的方式配置: (就是配置一个 server_name = ''的server)
server {
listen 80;
server_name "";
return 444;
}
再来个高级些,或者说 ”奇怪些“的功能:如何监听从 192.168.1.2 请求过来的,访问80端口的request呢?
需要按照下面的方式配置:
server {
listen 192.168.1.1:80; # 监听 192.168.1.1 过来的,访问80端口的request
server_name example.org www.example.org;
...
}
server {
listen 192.168.1.1:80;
server_name example.net www.example.net;
...
}
server {
listen 192.168.1.2:80;
server_name example.com www.example.com;
...
}