Back

nginx 处理 request 的过程 (how nginx processes a request)

发布时间: 2015-01-03 07:18:00

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;
    ...
}

Back