文件结构
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
例子
#!nginx
# 使用的用户和组,默认为nobody nobody
user www www;
# 指定工作衍生进程数,默认为1
worker_processes 2;
# 指定 pid 存放的路径
pid /var/run/nginx.pid;
# 制定日志路径,级别
# 级别可以在下方直接使用 [ debug | info | notice | warn | error | crit ] 参数
error_log /var/log/nginx.error_log info;
events {
# 允许的连接数
connections 2000;
# use [ kqueue | rtsig | epoll | /dev/poll | select | poll ] ;
# 具体内容查看 http://wiki.codemongers.com/事件模型
use kqueue;
}
http {
# 文件扩展名与文件类型映射表
include conf/mime.types;
# 文件扩展名与文件类型映射表
default_type application/octet-stream;
# 自定义格式 main
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$gzip_ratio"';
# 自定义格式 download
log_format download '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent '
'"$http_referer" "$http_user_agent" '
'"$http_range" "$sent_http_content_range"';
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
gzip on;
gzip_min_length 1100;
gzip_buffers 4 8k;
gzip_types text/plain;
output_buffers 1 32k;
postpone_output 1460;
#允许sendfile方式传输文件,默认为off
sendfile on;
# 每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
# sendfile_max_chunk 100k;
tcp_nopush on;
tcp_nodelay on;
send_lowat 12000;
keepalive_timeout 75 20;
# lingering_time 30;
# lingering_timeout 10;
# reset_timedout_connection on;
server {
# 监听端口
listen 80;
# 域名可以有多个,用空格隔开
server_name one.example.com www.one.example.com;
access_log /var/log/nginx.access_log main; # 日志格式, log_format main
# 对 "/" 启用反向代理
location / {
proxy_pass http://127.0.0.1:8001;
proxy_redirect off;
# 后端的Web服务器可以通过Host获取用户真实Host
proxy_set_header Host $host;
# 后端的Web服务器可以通过X-Real-IP获取用户真实remote_addr
proxy_set_header X-Real-IP $remote_addr;
# 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 允许客户端请求的最大单文件字节数
client_max_body_size 10m;
# 缓冲区代理缓冲用户端请求的最大字节数
client_body_buffer_size 128k;
client_body_temp_path /var/nginx/client_body_temp;
# nginx跟后端服务器连接超时时间(代理连接超时)
proxy_connect_timeout 90;
# 后端服务器数据回传时间(代理发送超时)
proxy_send_timeout 90;
# 连接成功后,后端服务器响应时间(代理接收超时)
proxy_read_timeout 90;
proxy_send_lowat 12000;
# 设置代理服务器(nginx)保存用户头信息的缓冲区大小
proxy_buffer_size 4k;
# proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_buffers 4 32k;
# proxy_buffers缓冲区,网页平均在32k以下的设置
proxy_busy_buffers_size 64k;
# 设定缓存文件夹大小,大于这个值,将从upstream服务器传
proxy_temp_file_write_size 64k;
# 为存储承载从代理服务器接收到的数据的临时文件定义目录。指定目录下支持3级子目录结构
proxy_temp_path /var/nginx/proxy_temp;
# 默认编码
charset utf-8;
}
error_page 404 /404.html;
location /404.html {
root /spool/www;
charset on;
source_charset koi8-r;
}
location /old_stuff/ {
rewrite ^/old_stuff/(.*)$ /new_stuff/$1 permanent;
}
location /download/ {
valid_referers none blocked server_names *.example.com;
if ($invalid_referer) {
#rewrite ^/ http://www.example.com/;
return 403;
}
#rewrite_log on;
# rewrite /download/*/mp3/*.any_ext to /download/*/mp3/*.mp3
rewrite ^/(download/.*)/mp3/(.*)\..*$
/$1/mp3/$2.mp3 break;
root /spool/www;
#autoindex on;
access_log /var/log/nginx-download.access_log download;
}
location ~* ^.+\.(jpg|jpeg|gif)$ {
root /spool/www;
access_log off;
expires 30d;
}
}
}