云羽网络做网站怎么样,电商网店运营,wordpress个性404,wordpress首页表单. Nginx服务的基本配置1.1 用于调试进程和定位问题的配置项是否以守护进程的方式运行nginx# 默认ondaemon on|off;是否以master/worker方式工作# 默认on#xff0c;指定了是否以master-worker进程的方式运行#xff0c;如果设置为off#xff0c;那么所有的请求将只会由maste…. Nginx服务的基本配置1.1 用于调试进程和定位问题的配置项是否以守护进程的方式运行nginx# 默认ondaemon on|off;是否以master/worker方式工作# 默认on指定了是否以master-worker进程的方式运行如果设置为off那么所有的请求将只会由master进程处理master_process on|off;error日志的设置# 指定了error日志的目录和日志级别第二个参数用于指定目录第三个参数用于指定日志级别总共有debug、info、notice、warn、error、crit、alert、emerg这些日志级别中从左往右优先级依次增大默认为infoerror_log logs/error.log error;是否处理几个特殊的调试点# 指定了调试点debug_points stop|abort仅对指定的客户端输出debug级别的日志debug_connection IP|CIDR该参数主要用于events模块中针对指定的ip或者网段记录debug日志events { debug_connection 10.224.66.14; debug_connection 10.224.57.0/24;}需要注意的是在使用该参数时必须要确保在进行configure时已经加入了--with-debug参数否则不会生效限制coredump核心转储文件的大小worker_rlimit_core size;在Linux操作系统中如果一个进程由于错误或者收到信号而终止时会将进程执行时的内存内容写入一个文件(core文件)以作为调试之用这就是所谓的核心转储。在nginx进程宕机时其就会产生核心转储文件而且该文件一般都有几个G因而如果不限制该文件的大小那么很有可能会把服务器磁盘占满。该参数的作用就是限制核心转储文件的大小的。指定coredump文件生成目录working_directory path;该参数指定了在生成核心转储文件时将该文件存放的目录。1.2 正常运行的配置项定义环境变量env TESTPATH/tmp/这个配置项可以让用户直接设置操作系统上的环境变量。嵌入其他配置文件include /path/file用于将其他的配置文件引入进来该路径可以是绝对路径也可以是相对路径如果是相对路径则是基于nginx的配置目录而指定的。pid文件的路径pid path/file用于指定存储nginx的master进程运行所使用的进程id的文件的路径。Nginx的worker进程运行的用户及用户组user username [groupName]用于指定worker进程运行时所基于的用户和用户组默认都为nobody这里如果不指定groupName那么组名就与用户名一致。指定nginx的worker进程可以打开的最大句柄描述符个数worker_rlimit_nofile limit;设置一个worker进程能够打开的最大句柄描述符个数。限制信号队列worker_rlimit_sigpending limit;设置了每个用户能够发往nginx的信号队列的大小如果信号队列已满那么新发送的信号将会被丢弃。1.3 优化性能的配置项nginx的worker进程的个数worker_processes 1;用于指定nginx运行时worker进程的个数在nginx运行时每个worker进程都是单线程运行的这里需要判断worker进程是否进行了阻塞性操作如果有这样的操作那么稍微多配置一些worker进程比较好如果没有那么将worker进程数量设置得与CPU数量一样能够得到更好的性能。绑定nginx的worker进程到指定的CPU内核worker_cpu_affinity cpumask [cpumask...]将worker进程与指定的CPU进行绑定这样能够防止多个worker进程抢占同一个CPU从而避免出现同步问题。如下是一个4核CPU的配置方式worker_processes 4;worker_cpu_affinity 1000 0100 0010 0001;需要注意的是worker_cpu_affinity仅对于Linux系统有效。SSL硬件加速ssl_engine device;如果服务器上有SSL硬件加速设备那么就可以进行配置以加快SSL协议的处理速度。用户可以使用OpenSSL提供的命令来查看是否有SSL硬件加速设备openssl engine -t系统调用gettimeofday的执行频率timer_resolution -t默认情况下每次内核的事件调用返回时都会执行一次gettimeofday在早期的Linux版本中获取系统时间都会有一次从内核态到用户态的数据复制其代价比较高但是在最新的x86-64体系架构中gettimeofday仅仅只是一次vsyscall其仅仅只是对共享内存页中的数据的访问代价不大。nginx的worker进程优先级worker_priority nice;用于设置nginx的worker进程的优先级其中nice的默认值为0。在Linux操作系统中当有多个进程在竞争CPU执行资源时其就会根据每个进程设置的优先级来优先分配执行权限并且所分配的时间片也要高一些。优先级的值在-20~19之间数值越低优先级越高一般建议将nginx的优先级设置得更低一些这样才能保证其执行的权限但是建议不要设置得比内核的进程优先级(其值为-5)还要低。1.4 事件类配置项是否打开accept锁accept_mutex [on|off]accept_mutex参数用于控制是否启用负载均衡锁其默认值为on该锁会保证各个worker轮流的、序列化的与新客户端建立连接并且当某个worker的连接数达到了worker_connections配置的最大连接数的7/8时该锁会降低该worker将要新建立的连接数从而保证各个worker的负载均衡。lock文件的路径lock_file path/file;该参数指定了lock文件的路径。nginx会使用操作系统提供的锁功能但如果操作系统不支持原子锁此时才会使用文件锁来实现lock。如果accept_mutex参数设置为off那么该参数将不会生效。使用accept锁后到真正建立连接之间的延迟时间accept_mutex_delay Nms;如果一个worker进程尝试获取锁失败了那么其就会等待该参数指定的时间段之后再次尝试获取锁该值默认为500ms。批量建立新连接multi_accept [on|off];当事件模型通知此次有新的连接建立请求时尽可能的对本次调度中客户端发起的的所有TCP请求都建立连接该值默认为off。选择事件模型use [kqueue|rtsig|epoll|/dev/poll|select|poll|eventport];nginx所选用的事件模型其会自动使用最适合的模型。在Linux操作系统下支持poll、select和epoll三种其中epoll的性能是最高的。每个worker的最大连接数worker_connections number;指定了每个worker进程能够建立的最大连接数。2. http核心模块配置2.1 监听端口listen address:port[default(deprecated)|default_server|[backlognum|rcvbufsize|sndbufsize|accept_filterfilter|deferred|bind|ipv6only[on|off]|ssl]]这里的IP地址和端口号的配置非常灵活如果不配置端口号则默认为80端口而ip地址则可以使用通配符进行匹配如listen 127.0.0.1:8080;listen *:8080;listen的各个参数含义如下default和default_server将当前server块作为整个web服务器的默认server块如果没有server设置了该参数则将nginx.conf中的第一个server块作为默认server块。设置该参数的原因在于如果当前请求没有匹配到任意一个server那么就使用第一个server处理请求backlognum指定了TCP中的backlog队列的大小默认值为-1。在TCP的三次握手过程中进程此时还没有开始处理监听句柄而这些请求都会放在backlog队列中当backlog队列满时客户端新的握手请求就会被拒绝rcvbufsize设置监听句柄的SO_RCVBUF参数sndbufsize设置监听句柄的SO_SNDBUF参数accept_filter设置accept过滤器只对FreeBSD操作系统有用deferred如果设置了该参数如果用户发起了TCP连接请求那么在三次握手成功之后内核也不会调度相应的进程处理请求而是在用户真正的发送了数据包之后才会将请求发送给具体的进程进行处理bind绑定当前端口/地址对如127.0.0.1:8000只有同时对一个端口监听多个地址时才会生效ssl在当前监听的端口上建立的连接必须基于SSL协议2.2 主机名称语法server_name name [...];默认server_name ;配置块serverserver_name后可以跟多个主机名称在处理HTTP请求时其会将请求中的Host头部的主机名与server块中的主机名进行匹配如果遇到多个server块中的主机名匹配那么将会按照如下规则与其进行匹配首先匹配主机名完全匹配的server块然后匹配前缀使用通配符的server块接着匹配后缀使用通配符的server块最后匹配使用正则表达式的server块、如果没有找到能够匹配的主机名那么就会按照如下规则寻找server块优先选择在listen项中加入了[default|default_server]的server块找到匹配的listen端口的第一个server块2.3 server_names_hash_bucket_size语法server_names_hash_bucket_size size;默认server_names_hash_bucket_size 32|64|128;配置块http、server、locationserver_names_hash_bucket_size的作用主要是进行server name的hash匹配的在进行hash匹配时该参数指定了hash表的每个bucket占用的内存大小。2.4 server_names_hash_max_size语法server_names_hash_max_size size;默认server_names_hash_max_size 512;配置块http、server、locationserver_names_hash_max_size指定了进行server name查找时使用的hash表的大小该值越大那么占用的内存越多但是查询的效率也越高。2.5 重定向主机名称的处理语法server_name_in_redirect on|off;默认server_name_in_redirect on;配置块http、server或者location该配置需要配合server_name使用在使用on打开时表示在重定向请求时会使用server_name里配置的第一个主机名代替原来请求中的Host头部而使用off关闭时表示在重定向请求时使用请求本身的Host头部。2.6 location语法location [|~|~*|^~|] /uri/{...}配置块serverlocation的主要作用是与请求中的URI进行匹配如果匹配了就使用location块中的配置来处理用户请求。如下是location的匹配规则表示把URI作为字符串以便于参数中的uri做完全匹配。例如location / { # 只有当用户请求是/时才会使用该location下的配置}~表示匹配URI时是字母大小写敏感的~*表示匹配URI时是字母大小写不敏感的^~表示匹配URI时只需要其前半部分与uri参数匹配即可。例如location ^~ /images/ { # 以/images/开始的请求都会匹配上}表示仅用于nginx服务内部请求之间的重定向带有的location不直接处理用户请求可以在uir参数里使用正则表达式。如location ~* .(gif|jpg|jpeg)$ { # 匹配以.gif、.jpg、.jpeg结尾的请求}关于location的匹配需要说明的一点是location的匹配是有顺序的当一个请求匹配了多个location时实际上这个请求会被第一个location处理。3. 文件路径的定义3.1 以root方式设置资源路径语法root path;默认root html;配置块http、server、locationo、if示例如下location /download/ { root /opt/web/html/;}这种配置方式会将/download/开始的请求映射到/opt/web/html/目录下比如某个请求为/download/test/index.html那么nginx就会到服务器上查找/opt/web/html/download/test/index.html文件。3.2 以alias方式设置资源文件语法alias path;配置块location;与root一样alias也是配置资源文件路径的但是alias是location后的路径以别名的方式替换目标路径的指定部分比如如下配置location /conf { alias /usr/local/nginx/conf;}此时如果一个请求为/conf/index.html那么其前缀/conf将会与当前location匹配并且会将alias参数替换请求uri中匹配的部分也就是转换后的uri为/usr/local/nginx/conf/index.html。3.3 访问首页语法index file...;默认index index.html;配置块http、server、location该配置块的主要作用是将用户访问的某个地址映射到首页在进行首页查找时会按照顺序查询index参数后的文件如果存在则将其返回如果不存在则继续查找下一个。比如如下示例location / { root path; index /index.html /html/index.php /index.php}当接收到用户的/请求后其首先会查询/path/index.html文件是否存在如果不存在则查询下一个/path/html/index.php是否存在如果存在则直接返回依此类推。3.4 根据http返回码重定向页面语法error_page code[code...][|answer-code]uri|named_location配置块http、server、location、if该配置的主要作用是如果当前请求返回了指定的状态码那么就将其重定向到后面的错误页面。如error_page 404 /404.htmlerror_page 502 503 504 /50x.htmlerror_page 403 http://example.com/forbidden.htmlerror_page 404 fetch;需要注意的是即使重定向了URI返回的HTTP状态码还是原来的状态码如果需要修改状态码可以使用来修改原来的状态码如error_page 404 200 /empty.gif;error_page 404 403 /forbidden.gif;也可以不指定修改后的状态码而是由重定向后的请求决定其返回的状态码error_page 404 /empty.gif;在重定向后也可以不修改URI而是将这个请求重定向到另一个location中进行处理比如location / { error_page 404 fallback;}location fallback { proxy_pass http://backend;}3.5 是否支持递归的使用error_page语法recursive_error_pages [on|off];默认recursive_error_pages off;配置块http、server、location;该配置主要用于控制是否支持递归的定义error_page。3.6 try_files语法try_files path1[path2]uri;配置块server、location该参数的主要作用是在用户请求到达之后会依次尝试其后指定的各个path路径如果匹配上了那么就将该路径的值直接返回。如果都没有匹配上那么就会使用最后的uri作为默认处理路径。示例如try_files /system/maintenance.html $uri $uri/index.html $uri.html otherlocation other { proxy_pass http://backend;}4. 内存及磁盘资源的分配4.1 http包体只存储到磁盘文件中语法client_body_in_file_only on|clean|off;默认client_body_in_file_only off;配置块http、server、location当值配置为非off时用户请求的http包体一律存储到磁盘文件中即使只有0字节也会存储为文件。当请求结束时如果配置为on则这个文件不会被删除如果配置为clean则会删除该文件。4.2 http包体尽量写入到一个内存buffer中语法client_body_in_single_buffer on|off;默认client_body_in_single_buffer off;配置块http、server、location用户请求的http包体一律存储到内存buffer中如果存储的包体大小超过了client_body_buffer_size指定的大小那么该请求还是会存储到磁盘文件中。4.3 存储http头部的内存buffer大小语法client_header_buffer_size size;默认client_header_buffer_size 1k;配置块http、server该参数指定了用户请求的http头部的size大小如果请求头部大小超过了该数值那么就会将请求就会交由large_client_header_buffers参数定义的buffer处理。4.4 存储超大http头部的内存buffer大小语法large_client_header_buffers number size;默认large_client_header_buffers 48k;配置块http、server该参数主要是在用户的请求头部信息超过了client_header_buffer_size所能存储的大小时使用该参数定义了每个header所能传输的数据的大小以及最多能够传输多少个header。如果单个header大小超限则会返回414(Request URI too large)状态码如果是header个数超限则会返回400(Bad Request)状态码。4.5 存储http包体的内存buffer的大小语法client_body_buffer_size size;默认client_body_buffer_size 8k/16k;配置块http、server、location该参数指定了nginx接收用户http请求的包体buffer的大小如果超过了该大小那个请求包体将会存储到磁盘文件中。需要注意的是如果用户请求的header中包含Content-Length并且其标识的长度小于上述参数指定的长度那么就会自动降低此次请求所使用的buffer大小。4.6 http包体的临时存放目录语法client_body_temp_path dir-path[level1[level2[level3]]]默认client_body_temp_path client_body_temp;配置块http、server、location该参数的主要作用是指定了存储http包体的磁盘目录后面的level表示可以有几级子目录这是因为如果请求比较多那么生成的文件就会比较多频繁的访问同一个目录可能会降低性能因而可以设置多级子目录用于文件的存放需要注意的是上述level参数表示的是所生成的目录名占有目标文件名字符的个数比如生成的目标文件名为00000123456而上述参数按如下配置client_body_temp_path /opt/nginx/client_temp 1 2;那么nginx就会截取目标文件名的最后1个字符作为一级目录倒数第二个和第三个总共两个字符作为二级目录最终文件将会存储在如下目录/opt/nginx/client_temp/6/45/00000123456nginx在生成目标文件时其文件名是以顺序递增的整数进行命名的。4.7 connection_pool_size语法connection_pool_size size;默认connection_pool_size 256;配置块http、server该参数指定了nginx为每个建立成功的TCP连接预先分配的内存池大小size指定的是预先分配的内存池大小。该参数需要谨慎配置因为更大的配置将会消耗服务器更多的内存而更小的配置将会导致服务器为了扩容而进行更多次的内存分配。4.8 request_pool_size语法request_pool_size size;默认request_pool_size 4k;配置块http、servernginx在接收到每个http请求时都会为其申请一个内存池该参数指定了该内存池的大小需要注意的是该内存池本质上就是从上面介绍的connection_pool_size内存池中进行申请在每次http请求结束时其就会销毁该请求申请的内存池而将其返还给connection_pool_size内存池而只有在此次TCP连接关闭时才会销毁整个连接的内存池。5. 网络连接的设置5.1 读取http头部的超时时间语法client_header_timeout time(默认单位秒);默认client_header_timeout 60;配置块http、server、location在客户端与服务器建立连接之后nginx会读取客户端发来的http头部如果超过该参数指定的时间还未读取到客户端发来的字节就会认为其超时了此时就会向客户端返回408(Request timed out)状态码。5.2 读取http包体的超时时间语法client_body_timeout time(默认单位秒);默认client_body_timeout 60;配置块http、server、location该参数主要作用是指定nginx读取请求包体的超时时间。5.3 发送响应的超时时间语法send_timeout time;默认send_timeout 60;配置块http、server、location这个参数主要指定了nginx向客户端发送响应的超时时间如果客户端一直没有尝试接收数据那么nginx就会关闭这个连接。5.4 reset_timeout_connection语法reset_timeout_connection on|off;默认reset_timeout_connection off;配置块http、server、location如果开启了该参数在连接超时后nginx会向客户端发送RST包来直接重置连接并且会释放服务器上关于该连接的所有缓存数据(如TCP滑动窗口等)。相比于正常关闭的方式它使得服务器能够避免产生许多处于FIN_WAIT_1、FIN_WAIT_2、TIME_WAIT状态的TCP连接。需要注意的是使用RST重置包关闭连接会带来一些问题默认情况下不会开启。5.5 lingering_close语法lingering_close off|on|always;默认lingering_close on;配置块http、server、location该配置块控制nginx关闭用户连接的方式。always表示关闭用户连接前必须无条件的处理连接上所有用户发送的数据。off表示关闭连接时完全不管连接上是否有用户准备就绪的数据。on是中间值一般情况下在关闭连接前都会处理连接上的用户发送的数据除非某些时候业务上认定这些数据是不需要的此时就会抛弃这些数据。5.6 lingering_time语法lingering_time time;默认lingering_time 30s;配置块http、server、location在lingering_close启用后这个配置项主要是针对大文件的传输用的比如当某个请求传输的数据超过了max_client_body_size时nginx就会向该客户端发送413(Request entity too large)状态码但是某些客户端可能不会理会该状态码而还是继续向服务器发送数据此时nginx就会在该参数的超时时间之后直接关闭该连接。5.7 lingering_timeout语法lingering_timeout time;默认lingering_timeout 5s;配置块http、server、location在lingering_close启用后nginx在关闭连接前会检测用户连接上是否还有未处理的数据如果在该参数指定的时间之后还没有相应的数据到达那么就会关闭该链接。5.8 对某些浏览器禁用keepalive功能语法keepalive_disable [msie6|safari|none]...默认keepalive_disablemsie6 safari配置块http、server、location该参数主要是指定对哪些浏览器禁用keepalive功能keepalive会在客户端与服务器之间建立一个长连接这对于发送多个http请求是非常有用的但是对于IE6和以前版本还有Safari浏览器在处理POST请求时会有功能性问题因而对于这些浏览器默认是禁用的。5.9 keepalive超时时间语法keepalive_timeout time(默认单位秒);默认keepalive_timeout 75;配置块http、server、location该参数主要是在一个keepalive连接在指定时长内没有接收到新的请求时将会关闭该连接。5.10 keepalive长连接上能够承载的最大请求数语法keepalive_requests n;默认keepalive_requests 100;配置块http、server、location该参数指定了一个keepalive长连接上能够承载的最大连接数默认为100。5.11 tcp_nodelay语法tcp_nodelay on|off;默认tcp_nodelay on;配置块http、server、location确定对keepalive连接是否使用TCP_NODELAY选项5.12 tcp_nopush语法tcp_nopush on|off;默认tcp_nopush off;配置块http、server、location在打开sendfile选项时确定是否开启FreeBSD系统上的TCP_NOPUSH或者Linux系统上的TCP_CORK功能。打开tcp_nopush后将会在发送响应时把整个响应包头放到一个TCP包中发送。6. MIME类型的设置6.1 MIME type与文件扩展的映射语法type {...};配置块http、server、location该配置项定义了MIME type到文件扩展名的映射。多个扩展名可以映射到同一个MIME type。例如types { text/html html; text/html conf; image/gif gif; image/jpeg jpg;}6.2 默认MIME type语法default_type MIME-type;默认default_type text/plain;配置块http、server、location当找不到相应的MIME type与文件扩展名之间的映射时使用默认的MIME type作为http header的Content-Type。6.3 types_hash_bucket_size语法types_hash_max_size size;默认types_hash_max_size 1024;配置块http、server、locationnginx使用了一个散列表来保存MIME type与文件扩展名之间的映射该参数就是指定该散列表桶的大小的。6.4 types_hash_max_size语法types_hash_max_size size;默认types_hash_max_size 1024;配置块http、server、location该参数指定了存储MIME type与文件扩展名的散列的最大大小该值越大散列的key就越稀疏检索速度越快但是会占用更多的内存该值越小占用的内存越小但是冲突率就会上升检索越慢。7. 对客户端请求的限制7.1 按http方法名限制用户请求语法limit_except method...{...}配置块location该配置项的主要作用是限制某些方法的请求的访问后面的参数可取GET、HEAD、POST、DELETE、MKCOL、COPY、MOVE、OPTIONS、PROPFIND、PROPPATCH、LOCK、UNLOCK或者PATCH。示例如limit_except GET { allow 192.168.1.0/32; deny all;}上述配置将会限制所有的GET请求的访问而允许其他方法的请求。7.2 http请求包体的最大值语法client_max_body_size size;默认client_max_body_size 1m;配置块http、server、location该参数指定了http请求的最大包体的大小nginx会根据请求header中的Content-Length所表示的长度来判断其与当前参数是否符合如果不符合则直接返回给客户端413(Request too large)状态码。7.3 对请求的限速语法limit_rate speed;默认limit_rate 0;配置块http、server、location、if该配置主要是对客户端的请求进行每秒传输的字节大小进行限速默认为0表示不限速针对不同的客户端可以使用$limit_rate参数执行不同的限速策略。如server { if ($slow) { set $limit_rate 4k; }}7.4 limit_rate_after语法limit_rate_after time;默认limit_rate_after 1m;配置块http、server、location、if该参数表示nginx向客户端发送的响应大小超过limit_rate_after指定的值之后才开始限速。8. 文件操作的优化8.1 sendfile系统调用语法sendfile on|off;默认sendfile off;配置块http、server、location该参数用于打开Linux上的sendfile系统调用在发送数据到网卡上时它减少了两次在用户态与内核态之间的数据拷贝过程而直接在磁盘读取数据之后发送到网卡上从而提升数据发送效率。8.2 AIO系统调用语法aio on|off;默认aio off;配置块http、server、location该参数指定了是否在FreeBSD或Linux系统上启动内核级别的异步文件I/O功能需要注意的是其与sendfile功能是互斥的。8.3 directio语法directio size|off;默认directio off;配置块http、server、location该配置项在FreeBSD和Linux系统上使用O_DIRECT选项去读取文件缓冲区大小为size通常对大文件的读取速度有优化作用。注意它与sendfile指令是互斥的。8.4 directio_alignment语法directio_alignment size;默认directio_alignment 512;配置块http、server、location它与directio配合使用指定以directio方式读取文件时的对其方式。一般情况下512B已经足够了但对于一些高性能文件系统如Linux下的XFS文件系统可能需要设置4KB作为对齐方式。8.5 打开文件缓存语法open_file_cache maxN[inactivetime]|off;默认open_file_cache off;配置块http、server、location文件缓存会在内存中存储以下三种信息文件句柄、文件大小和上次修改时间已经打开过的目录结构没有找到的或者没有权限操作的文件信息上面的配置项的三个参数的含义如下max表示内存中存储元素的最大个数。当达到最大限制数量后将采用LRU算法从缓存中淘汰最近最少使用的元素inactive表示在inactive指定的时间段内没有被访问过的元素将会被淘汰。默认时间为60秒off关闭缓存功能。示例如下open_file_cache max1000 inactive20s;8.6 是否缓存打开文件错误的信息语法open_file_cache_errors on|off;默认open_file_cache_errors off;配置块http、server、location该配置项表示是否对打开文件时找不到文件或者权限错误等信息进行缓存。8.7 不被淘汰的最小访问次数语法open_file_cache_min_uses number;默认open_file_cache_min_uses 1;配置块http、server、location该参数与open_file_cache配合使用如果在指定时间内访问该文件的次数小于该参数指定的次数那么该文件还是会被淘汰。8.8 检验缓存中元素有效性的频率语法open_file_cache_valid time;默认open_file_cahce_valid 60s;配置块http、server、location该参数指定了每间隔多长时间检查一下缓存中数据的有效性默认为60秒。9. 对客户端请求的特殊处理9.1 忽略不合法的http头部语法ignore_invalid_headers on|off;默认ignore_invalid_headers on;配置块http、server如果将其设置为off那么当客户端请求中有不合法的header时就会直接响应400(Bad Request)如果将其设置为on那么就会忽略此header。9.2 http头部是否允许下划线语法underscores_in_headers on|off;默认underscores_in_headers off;配置块http、server该参数指定了http头部中是否能够带有下划线默认是不允许。9.3 对If-Modified-Since头部的处理策略语法if_modified_since [off|exact|before];默认if_modified_since exact;配置块http、server、locationIf-Modified-Since头部主要是浏览器处于性能考虑而作的一个缓存策略浏览器在请求过一份文件之后会将该文件在本地缓存并记录缓存时间在下次请求时会在If-Modified-Since头部中带上上次缓存的时间服务器在接收到该请求时会将服务器文件的修改时间与请求中的时间进行比较如果文件在这之后有过修改那么服务器就会正常的返回文件内容以及200状态码如果文件没有修改过那么说明浏览器中缓存的文件是最新的此时就会返回304(Not Modified)状态码。该配置参数有三个选项其含义分别如下off表示忽略用户请求中的If-Modified-Since头部在每次请求时都将文件内容返回此时响应状态码为200exact将If-Modified-Since头部包含的时间与将要返回的文件的上次修改时间做精确比较如果没有匹配上则返回200和文件的实际内容如果匹配上了则表示文件内容已经是最新的此时就会返回304(Not Modified)状态码浏览器收到后会直接读取本地缓存before这个是比exact更宽松的策略只要文件的上次修改时间在用户请求的If-Modified-Since头部指定的时间之前那么就会向客户端返回304(Not Modified)状态码。9.4 文件未找到时是否返回error日志语法log_not_found on|off;默认log_not_found on;配置块http、server、location该配置的主要作用在于当用户请求某个文件时如果该文件不存在是否将这条信息记录在error日志中主要用于定位问题。9.5 merge_slashes语法merge_slashes on|off;默认merge_slashes on;配置块http、server、location该配置项表示是否合并相邻的/例如//test///a.txt在配置为on时会将其匹配为location/test/a.txt如果配置为off则不会匹配URI将仍然是//test///a.txt。9.6 DNS解析地址语法resolver address...;配置块http、server、location设置DNS名字解析服务器的地址如resolver 127.0.0.1 192.0.2.1;9.7 DNS解析的超时时间语法resolver_timeout time;默认resolver_timeout 30s;配置块http、server、location次配置项表示DNS解析的超时时间9.8 返回错误页面时是否在server中注明nginx版本语法server_tokens on|off;默认server_tokens on;配置块http、server、location表示在返回错误页面时是否在Server头部中返回具体的nginx版本这主要是为了定位问题方便。服务器后台开发的技术点还有很多理论的技术语法一是方面还有的是在项目中实际应用上所学。 除了nginx之外还有如果你也对Linux后台服务器开发感兴趣想学习这方面的技术可以加入我们一起交流讨论学习完整学习路线图进群群文件自行拿走。https://www.bilibili.com/read/cv3855670出处 bilibili