为了让配置文件便于管理,可以分割配置到/etc/nginx/conf.d中,然后通过在nginx.conf中include
include conf.d/http;
include conf.d/stream;
include conf.d/exchange-enhanced
对于一些顶级指令,http,mail,stream,events,被称为上下文,可以组合其他指令
常用功能
1 虚拟主机 server
2 配置location server->location
3 使用变量 $remote_addr
$uri
4 返回state return 400
5 重写url
6 重写response response中字符串的替换
7 错误处理
user nobody; # a directive in the 'main' context
events {
# configuration of connection processing
}
http {
# Configuration specific to HTTP and affecting all virtual servers
server {
# configuration of HTTP virtual server 1
location /one {
# configuration for processing URIs with '/one'
}
location /two {
root /tmp // 搜索静态文件的根目录
}
location ~ \.html? { //~区分大小写的正则, (~*)不区分
proxy_pass http://www.example.com; // 代理
}
location /permanently/moved/url {
return 301 http://www.example.com/moved/here; || return 200
}// return可以被放到 location与server中
}
server {
# configuration of HTTP virtual server 2
location / {
sub_filter 'href="http://127.0.0.1:8080/' 'href="https://$host/';
sub_filter 'img src="http://127.0.0.1:8080/' 'img src="https://$host/';
sub_filter_once on;
}
location /images/ {
# Set the root directory to search for the file
root /data/www;
# Disable logging of errors related to file existence
open_file_cache_errors off;
# Make an internal redirect if the file is not found
error_page 404 = /fetch$uri;// 如果找不到就执行这个
}
}
server {
rewrite ^(/download/.*)/media/(.*)\..*$ $1/mp3/$2.mp3 last; // last break
// download/some/media/file are changed to /download/some/mp3/file.mp3.
rewrite ^(/download/.*)/audio/(.*)\..*$ $1/mp3/$2.ra last;
//download/some/media/file are changed to /download/some/mp3/file.ra
return 403;
}}
stream { # Configuration specific to TCP and affecting all virtual servers server { # configuration of TCP virtual server 1 }}子指令上下文会自动继承父指令的一些设置,如果不想就去覆盖他