Intro
Nginx处理请求
根据域名路由服务器
1 2 3 4 5 6 7 8 9 10 11
| server { listen 80; server_name example.org www.example.org; ... }
server { listen 80 default_server; server_name example.net www.example.net; ... }
|
nginx仅通过Host字段对请求进行匹配, 然后对请求进行路由. 如果没有任何匹配的配置, 则会被转向default_server
, 如果没有指定default_server
则会被转向第一个server
.
处理未定义的请求
1 2 3 4 5
| server { listen 80; server_name ""; return 444; }
|
如果请求头中的Host
未被定义, 可以定义以上server
去处理异常. 注意是未被定义, 而不是不匹配.
混合名称和IP进行路由服务器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| server { listen 192.168.1.1:80; server_name example.org www.example.org; ... }
server { listen 192.168.1.1:80 default_server; server_name example.net www.example.net; ... }
server { listen 192.168.1.2:80 default_server; server_name example.com www.example.com; ... }
|
listen可以指定ip, port, ip+port.
每个ip都可以有自己的default_server
一个简单的配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| server { listen 80; server_name example.org www.example.org; root /data/www;
location / { index index.html index.php; }
location ~* \.(gif|jpg|png)$ { expires 30d; }
location ~ \.php$ { fastcgi_pass localhost:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
|
URL地址会被最具体的location
规则所解析.
Reference
http://nginx.org/en/docs/http/request_processing.html