nginx http core module
absolute_redirect
Syntax: absolute_redirect on | off;
Default:
absolute_redirect on;
Context: http, server, location
This directive appeared in version 1.11.8.
如果禁用該項,Nginx的反向代理連接將會是相對定位的搁嗓。
aio
Syntax: aio on | off | threads[=pool];
Default:
aio off;
Context: http, server, location
This directive appeared in version 0.8.11.
使用于Linux或FreeBSD系統(tǒng)上剔交,標(biāo)識是否允許或禁止異步IO
location /video/ {
aio on;
output_buffers 1 64k;
}
在FreeBSD系統(tǒng)上限府,AIO特性起用于FreeBSD 4.3版本,到FreeBSD 11.0,AIO也可以靜態(tài)鏈接到內(nèi)核中松靡,如:
options VFS_AIO
或動態(tài)加載到內(nèi)核中,如:
kldload aio
在Linux上坛增,AIO起用于Linux 2.6.22,有必要開啟 directio
薄腻,否則將會阻塞讀收捣。
location /video/ {
aio on;
directio 512;
output_buffers 1 128k;
}
在Linux上,directio
僅用于讀對齊邊界的512字節(jié)(XFS是4K)的塊庵楷,未對齊邊界的文件讀取時使用阻塞模式罢艾。也就是大小切分且整好的塊,就直接讀取了尽纽,如果不是切分好的整好大小的塊咐蚯,AIO讀取的時候,將會發(fā)生阻塞弄贿。
這同樣適用于不是從文件頭部開始字節(jié)范圍請求和FLV請求春锋,斷點下載等情況,就是從起點字節(jié)到結(jié)束字節(jié)請求差凹,起點字節(jié)不是文件開頭處期奔,結(jié)束字節(jié)不是文件末尾,說白了就是取文件中指定起止字節(jié)的一段內(nèi)容:不是字節(jié)對齊的時候危尿,會阻塞讀取呐萌。
當(dāng)在Linux上同時設(shè)置了 aio
和 sendfile
時,AIO用于文件大小大于或等于 directio
指定定的文件谊娇, sendfile
用于小文件或 directio
被禁用的時候肺孤。
location /video/ {
sendfile on; //小于8M的文件,使用sendfile
aio on; //大于等于8M的文件济欢,使用aio
directio 8m;
}
最后赠堵,文件可以用多線程來讀和 send
,而不用阻塞 worker 進程。
location /video/ {
sendfile on;
aio threads;
}
讀和 send
文件操作的線程來自于線程池中法褥,如果線程池的名稱未設(shè)置顾腊,則線程池名稱默認為 default
,線程池名稱也可以使用變量來設(shè)置
aio threads=pool$disk;
默認情況下挖胃,多線程是禁用的杂靶,可以使用 --with-threads
編譯參數(shù)來編譯啟用,目前多線程僅兼容 epoll
酱鸭、kqueue
吗垮、eventport
方法。多線程send file僅在Linxu上支持凹髓,這也解釋了為什么默認是不開啟多線程的烁登,因為有諸多的限制條件,默認開啟的都是滿足幾乎所有系統(tǒng)的。
其他的參看 sendfile
指令饵沧。
<h3 id="2"> aio_write </h3>
Syntax: aio_write on | off;
Default:
aio_write off;
Context: http, server, location
This directive appeared in version 1.9.13.