1、HTTP服务器
server { listen 80; server_name localhost; client_max_body_size 1024M; # 默认location location / { root /usr/local/var/www/html; index index.html index.htm; } }
2、静态服务器
server { listen 80; server_name localhost; set $doc_root /usr/local/var/www; # 默认location location / { root /usr/local/var/www/html; index index.html index.htm; } location ^~ /images/ { root $doc_root; } location ~* \.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)$ { root $doc_root/img; } }
3、反向代理
server { listen 80; server_name localhost; location / { proxy_pass http://localhost:8081; proxy_set_header Host $host:$server_port; # 设置用户ip地址 proxy_set_header X-Forwarded-For $remote_addr; # 当请求服务器出错去寻找其他服务器 proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; } }
4、负载均衡
upstream web_servers { server localhost:8081; server localhost:8082; } server { listen 80; server_name localhost; #access_log logs/host.access.log main; location / { proxy_pass http://web_servers; # 必须指定Header Host proxy_set_header Host $host:$server_port; } }
5、动静分离
upstream web_servers { server localhost:8081; server localhost:8082; } server { listen 80; server_name localhost; set $doc_root /usr/local/var/www; location ~* \.(gif|jpg|jpeg|png|bmp|ico|swf|css|js)$ { root $doc_root/img; } location / { proxy_pass http://web_servers; # 必须指定Header Host proxy_set_header Host $host:$server_port; } error_page 500 502 503 504 /50x.html; location = /50x.html { root $doc_root; } }
6、其他
return指令
location /permanently/moved/url { return 301 http://www.example.com/moved/here; }
rewrite指令
location /users/ { rewrite ^/users/(.*)$ /show?user=$1 break; }
error_page指令
error_page 404 /404.html;
日志
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /usr/local/etc/nginx/logs/host.access.log main; gzip on;
deny 指令
# 禁止访问某个目录 location ~* \.(txt|doc)${ root $doc_root; deny all; }
内置变量
$args:这个变量等于请求行中的参数,同$query_string $content_length:请求头中的Content-length字段。 $content_type:请求头中的Content-Type字段。 $document_root:当前请求在root指令中指定的值。 $host:请求主机头字段,否则为服务器名称。 $http_user_agent:客户端agent信息 $http_cookie:客户端cookie信息 $limit_rate:这个变量可以限制连接速率。 $request_method:客户端请求的动作,通常为GET或POST。 $remote_addr:客户端的IP地址。 $remote_port:客户端的端口。 $remote_user:已经经过Auth Basic Module验证的用户名。 $request_filename:当前请求的文件路径,由root或alias指令与URI请求生成。 $scheme:HTTP方法(如http,https)。 $server_protocol:请求使用的协议,通常是HTTP/1.0或HTTP/1.1。 $server_addr:服务器地址,在完成一次系统调用后可以确定这个值。 $server_name:服务器名称。 $server_port:请求到达服务器的端口号。 $request_uri:包含请求参数的原始URI,不包含主机名,如:”/foo/bar.php?arg=baz”。 $uri:不带请求参数的当前URI,$uri不包含主机名,如”/foo/bar.html”。 $document_uri:与$uri相同
参考