欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

nginx配置项(二)

程序员文章站 2024-02-20 19:37:10
...

虚拟主机配置:

(1)监听端口

语法: listen address:port[default(deprecated in 0.8.21)|default_server| [backlog=num|rcvbuf=size|sndbuf=size|accept_filter=filter|deferred|bind|ipv6only=[on|off]|ssl]]; 

默认: listen 80;
配置块: server

IPV4:
listen 127.0.0.1:8000; 
listen 127.0.0.1;        # 注意:不加端口时,默认监听80端口
listen 8000; 
listen *:8000; 
listen localhost:8000;

在地址和端口后,还可以加上其他参数

listen 443 default_server ssl; 
listen 127.0.0.1 default_server accept_filter=dataready backlog=1024;

IPV6:
listen [::]:8000; 
listen [fe80::1]; 
listen [:::a8c9:1234]:80;

listen可用参数的意义:
default:将所在的server块作为整个Web服务的默认server块。如果没有设置这个参数, 那么将会以在nginx.conf中找到的第一个server块作为默认server块。为什么需要默认虚拟主机 呢?当一个请求无法匹配配置文件中的所有主机域名时,就会选用默认的虚拟主机(在11.3 节介绍默认主机的使用)。
default_server:同上。
backlog=num:表示TCP中backlog队列的大小。默认为–1,表示不予设置。在TCP建 立三次握手过程中,进程还没有开始处理监听句柄,这时backlog队列将会放置这些新连接。 可如果backlog队列已满,还有新的客户端试图通过三次握手建立TCP连接,这时客户端将会 建立连接失败。
bind:绑定当前端口/地址对,如127.0.0.1:8000。只有同时对一个端口监听多个地址时 才会生效。
ssl:在当前监听的端口上建立的连接必须基于SSL协议。
(2)主机名称

语法: server_name name[...]; 
默认: server_name""; 

配置块: server
(3)server_names_hash_bucket_size

语法: server_names_hash_bucket_size size; 
默认: server_names_hash_bucket_size 32|64|128; 

配置块: http、server、location
(4)server_names_hash_max_size

语法: server_names_hash_max_size size; 
默认: server_names_hash_max_size 512; 

配置块: http、server、location
(5)重定向主机名称的处理

语法: server_name_in_redirect on|off; 
默认: server_name_in_redirect on; 

配置块: http、server或者location
(6)location

语法: location[=|~|~*|^~|@]/uri/{...} 

配置块: server

文件路径的定义:

(1)以root方式设置资源路径

语法: root path; 
默认: root html; 

配置块: http、server、location、if

(2)以alias方式设置资源路径

语法: alias path; 
配置块: location

如果有一个请求的URI是/conf/nginx.conf,而用户实际想访问的文件在
usrlocal/nginx/conf/nginx.conf,那么想要使用alias来进行设置的话:

location conf {
     alias usr/local/nginx/conf/;
 }
如果用root设置:
location conf { 
    root usr/local/nginx/; 
}

(3)访问首页

语法: index file...; 
默认: index index.html; 

配置块: http、server、location
(4)根据HTTP返回码重定向页面

语法: error_page code[code...][=|=answer-code]uri|@named_location 
配置块: http、server、location、if

(5)是否允许递归使用error_page

语法: recursive_error_pages[on|off]; 
默认: recursive_error_pages off; 

配置块: http、server、location
(6)try_files

语法: try_files path1[path2]uri; 

配置块: server、location

内存及磁盘资源的分配:

(1)HTTP包体只存储到磁盘文件中

语法: client_body_in_file_only on|clean|off; 
默认: client_body_in_file_only off; 

配置块: http、server、location
(2)HTTP包体尽量写入到一个内存buffer中

语法: client_body_in_single_buffer on|off; 
默认: client_body_in_single_buffer off; 

配置块: http、server、location
(3)存储HTTP头部的内存buffer大小

语法: client_header_buffer_size size; 
默认: client_header_buffer_size 1k; 

配置块: http、server
(4)存储超大HTTP头部的内存buffer大小

语法: large_client_header_buffers number size;
默认: large_client_header_buffers 48k; 

配置块: http、server
(5)存储HTTP包体的内存buffer大小

语法: client_body_buffer_size size; 
默认: client_body_buffer_size 8k/16k;

配置块: http、server、location
(6)HTTP包体的临时存放目录

语法: client_body_temp_path dir-path[level1[level2[level3]]] 
默认: client_body_temp_path client_body_temp; 

配置块: http、server、location
client_body_temp_path opt/nginx/client_temp 1 2;
(7)connection_pool_size

语法: connection_pool_size size; 
默认: connection_pool_size 256; 

配置块: http、server
(8)request_pool_size

语法: request_pool_size size; 
默认: request_pool_size 4k;

配置块: http、server

网络连接的设置:

(1)读取HTTP头部的超时时间

语法: client_header_timeout time(默认单位:秒); 
默认: client_header_timeout 60; 

配置块: http、server、location
(2)读取HTTP包体的超时时间

语法: client_body_timeout time(默认单位:秒); 
默认: client_body_timeout 60; 

配置块: http、server、location
(3)发送响应的超时时间

语法: send_timeout time; 
默认: send_timeout 60; 

配置块: http、server、location
(4)reset_timeout_connection

语法: reset_timeout_connection on|off; 
默认: reset_timeout_connection off; 

配置块: http、server、location
(5)lingering_close

语法: lingering_close off|on|always; 
默认: lingering_close on; 

配置块: http、server、location
(6)lingering_time

语法: lingering_time time; 
默认: lingering_time 30s; 

配置块: http、server、location
(7)lingering_timeout

语法: lingering_timeout time; 
默认: lingering_timeout 5s; 

配置块: http、server、location
(8)对某些浏览器禁用keepalive功能

语法: keepalive_disable[msie6|safari|none]... 
默认: keepalive_disablemsie6 safari 

配置块: http、server、location
(9)keepalive超时时间

语法: keepalive_timeout time(默认单位:秒); 
默认: keepalive_timeout 75; 

配置块: http、server、location
(10)一个keepalive长连接上允许承载的请求最大数

语法: keepalive_requests n; 
默认: keepalive_requests 100; 

配置块: http、server、location
(11)tcp_nodelay

语法: tcp_nodelay on|off; 
默认: tcp_nodelay on; 

配置块: http、server、location
(12)tcp_nopush

语法: tcp_nopush on|off; 
默认: tcp_nopush off; 

配置块: http、server、location

MIME类型的设置:

MIME type与文件扩展的映射

语法: type{...}; 

配置块: http、server、location

types { 
    text/html html; 
    text/html conf; 
    image/gif gif; 
    image/jpeg jpg; 
}

默认MIME type

语法: default_type MIME-type; 
默认: default_type text/plain; 

配置块: http、server、location
types_hash_bucket_size

语法: types_hash_bucket_size size;
默认: types_hash_bucket_size 32|64|128; 

配置块: http、server、location
types_hash_max_size

语法: types_hash_max_size size; 
默认: types_hash_max_size 1024; 

配置块: http、server、location

对客户端请求的限制:

(1)按HTTP方法名限制用户请求

语法: limit_except method...{...} 

配置块: location
(2)HTTP请求包体的最大值

语法: client_max_body_size size; 
默认: client_max_body_size 1m; 

配置块: http、server、location
(3)对请求的限速

语法: limit_rate speed; 
默认: limit_rate 0; 

配置块: http、server、location、if
(4)limit_rate_after

语法: limit_rate_after time; 
默认: limit_rate_after 1m; 

配置块: http、server、location、if

文件操作的优化:

(1)sendfile系统调用

语法: sendfile on|off; 
默认: sendfile off; 

配置块: http、server、location
(2)AIO系统调用

语法: aio on|off; 
默认: aio off; 

配置块: http、server、location
(3)directio

语法: directio size|off; 
默认: directio off; 

配置块: http、server、location
(4)directio_alignment

语法: directio_alignment size; 
默认: directio_alignment 512; 

配置块: http、server、location
(5)打开文件缓存

语法: open_file_cache max=N[inactive=time]|off; 
默认: open_file_cache off; 

配置块: http、server、location
(6)是否缓存打开文件错误的信息

语法: open_file_cache_errors on|off; 
默认: open_file_cache_errors off; 

配置块: http、server、location
(7)不被淘汰的最小访问次数

语法: open_file_cache_min_uses number; 
默认: open_file_cache_min_uses 1; 

配置块: http、server、location
(8)检验缓存中元素有效性的频率

语法: open_file_cache_valid time; 
默认: open_file_cache_valid 60s; 

配置块: http、server、location

对客户端请求的特殊处理:

(1)忽略不合法的HTTP头部

语法: ignore_invalid_headers on|off; 
默认: ignore_invalid_headers on; 

配置块: http、server
(2)HTTP头部是否允许下划线

语法: underscores_in_headers on|off; 
默认: underscores_in_headers off; 

配置块: http、server
(3)对If-Modified-Since头部的处理策略

语法: if_modified_since[off|exact|before]; 
默认: if_modified_since exact; 

配置块: http、server、location
(4)文件未找到时是否记录到error日志

语法: log_not_found on|off; 
默认: log_not_found on; 

配置块: http、server、location
(5)merge_slashes

语法: merge_slashes on|off; 
默认: merge_slashes on; 

配置块: http、server、location
(6)DNS解析地址

语法: resolver address...; 

配置块: http、server、location
(7)DNS解析的超时时间

语法: resolver_timeout time; 
默认: resolver_timeout 30s; 

配置块: http、server、location
(8)返回错误页面时是否在Server中注明Nginx版本

语法: server_tokens on|off; 
默认: server_tokens on; 

配置块: http、server、location

负载均衡的基本配置:

(1)upstream块

语法: upstream name{...} 

配置块: http
(2)server

语法: server name[parameters]; 

配置块: upstream
(3)ip_hash

语法: ip_hash; 

配置块: upstream

反向代理的基本配置:

(1)proxy_pass

语法: proxy_pass URL; 

配置块: location、if
(2)proxy_method

语法: proxy_method method; 

配置块: http、server、location
(3)proxy_hide_header

语法: proxy_hide_header the_header; 

配置块: http、server、location
(4)proxy_pass_header

语法: proxy_pass_header the_header; 

配置块: http、server、location
(5)proxy_pass_request_body

语法: proxy_pass_request_body on|off; 
默认: proxy_pass_request_body on; 

配置块: http、server、location
(6)proxy_pass_request_headers

语法: proxy_pass_request_headers on|off; 
默认: proxy_pass_request_headers on; 

配置块: http、server、location
(7)proxy_redirect

语法: proxy_redirect[default|off|redirect replacement]; 
默认: proxy_redirect default; 

配置块: http、server、location
(8)proxy_next_upstream

语法: proxy_next_upstream[error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off]; 
默认: proxy_next_upstream error timeout; 

配置块: http、server、location
参考资料:
http://nginx.org/en/docs/
《深入理解Nginx模块开发与架构解析第2版》