aboutsummaryrefslogtreecommitdiffstats
path: root/www
diff options
context:
space:
mode:
authorosa <osa@FreeBSD.org>2009-08-29 00:13:10 +0800
committerosa <osa@FreeBSD.org>2009-08-29 00:13:10 +0800
commit017d2c62450fa9d4e1cf4178c5697ae3a912d8ff (patch)
tree56b42f42bbb710cb6dae58fe47b06d1b77a20baa /www
parenta79720233d39cea9df990eb1b69723fd58af30c7 (diff)
downloadfreebsd-ports-gnome-017d2c62450fa9d4e1cf4178c5697ae3a912d8ff.tar.gz
freebsd-ports-gnome-017d2c62450fa9d4e1cf4178c5697ae3a912d8ff.tar.zst
freebsd-ports-gnome-017d2c62450fa9d4e1cf4178c5697ae3a912d8ff.zip
Update from 0.8.10 to 0.8.11.
Remove needless extra patch. <ChangeLog> *) Change: directive "gzip_disable msie6" enables gzipping for MSIE 6.0 SV1. *) Feature: file AIO support on FreeBSD and Linux. *) Feature: the "directio_alignment" directive. </ChangeLog>
Diffstat (limited to 'www')
-rw-r--r--www/nginx-devel/Makefile7
-rw-r--r--www/nginx-devel/distinfo6
-rw-r--r--www/nginx-devel/files/extra-patch-aio640
3 files changed, 5 insertions, 648 deletions
diff --git a/www/nginx-devel/Makefile b/www/nginx-devel/Makefile
index 6650f45be0ba..22d940570a08 100644
--- a/www/nginx-devel/Makefile
+++ b/www/nginx-devel/Makefile
@@ -6,7 +6,7 @@
#
PORTNAME= nginx
-PORTVERSION= 0.8.10
+PORTVERSION= 0.8.11
CATEGORIES= www
MASTER_SITES= http://sysoev.ru/nginx/
MASTER_SITES+= ${MASTER_SITE_LOCAL}
@@ -18,7 +18,7 @@ MAINTAINER= osa@FreeBSD.org
COMMENT= Robust and small WWW server
OPTIONS= DEBUG "Enable nginx debugging" off \
- FILE_AIO "Enable file aio (experimental)" off \
+ FILE_AIO "Enable file aio" off \
IPV6 "Enable IPv6" off \
GOOGLE_PERFTOOLS "Enable google perftools module" off \
HTTP_MODULE "Enable HTTP module" on \
@@ -345,9 +345,6 @@ post-patch:
@${REINPLACE_CMD} 's!%%HTTP_PORT%%!${HTTP_PORT}!; \
s!%%PREFIX%%!${PREFIX}!' \
${WRKSRC}/conf/nginx.conf
-.if defined(WITH_FILE_AIO)
- @${PATCH} ${PATCH_ARGS} < ${PATCHDIR}/extra-patch-aio
-.endif
.if defined(WITH_HTTP_ACCESSKEY_MODULE)
@${REINPLACE_CMD} \
's!$$HTTP_ACCESSKEY_MODULE!ngx_http_accesskey_module!' \
diff --git a/www/nginx-devel/distinfo b/www/nginx-devel/distinfo
index 5fcd343360bc..f39e0da73cbe 100644
--- a/www/nginx-devel/distinfo
+++ b/www/nginx-devel/distinfo
@@ -1,6 +1,6 @@
-MD5 (nginx-0.8.10.tar.gz) = 9a134366820e04e4f22357aa86a01bff
-SHA256 (nginx-0.8.10.tar.gz) = 0ee2bc21dd117905cf2094f8762fe0e0e612fda3661dcd402319b873ed35b955
-SIZE (nginx-0.8.10.tar.gz) = 599111
+MD5 (nginx-0.8.11.tar.gz) = ab368986468d3b60630d68d979dbca53
+SHA256 (nginx-0.8.11.tar.gz) = 127ad02009e9628113915bb9f42c3eb77bbecf8a689ee678dfcdd4e7ab612a30
+SIZE (nginx-0.8.11.tar.gz) = 603804
MD5 (nginx-accesskey-2.0.3.tar.gz) = 9b5304346d5139b1841f5baa01ab0cbe
SHA256 (nginx-accesskey-2.0.3.tar.gz) = d9e94321e78a02de16c57f3e048fd31059fd8116ed03d6de7180f435c52502b1
SIZE (nginx-accesskey-2.0.3.tar.gz) = 2632
diff --git a/www/nginx-devel/files/extra-patch-aio b/www/nginx-devel/files/extra-patch-aio
deleted file mode 100644
index d5ad8f65a486..000000000000
--- a/www/nginx-devel/files/extra-patch-aio
+++ /dev/null
@@ -1,640 +0,0 @@
-Index: src/http/ngx_http_copy_filter_module.c
-===================================================================
---- src/http/ngx_http_copy_filter_module.c (revision 2356)
-+++ src/http/ngx_http_copy_filter_module.c (working copy)
-@@ -11,9 +11,18 @@
-
- typedef struct {
- ngx_bufs_t bufs;
-+#if (NGX_HAVE_FILE_AIO)
-+ ngx_flag_t aio;
-+#endif
- } ngx_http_copy_filter_conf_t;
-
-
-+#if (NGX_HAVE_FILE_AIO)
-+static void ngx_http_copy_aio_handler(ngx_output_chain_ctx_t *ctx,
-+ ngx_file_t *file);
-+static void ngx_http_copy_aio_event_handler(ngx_event_t *ev);
-+#endif
-+
- static void *ngx_http_copy_filter_create_conf(ngx_conf_t *cf);
- static char *ngx_http_copy_filter_merge_conf(ngx_conf_t *cf,
- void *parent, void *child);
-@@ -29,6 +38,17 @@
- offsetof(ngx_http_copy_filter_conf_t, bufs),
- NULL },
-
-+#if (NGX_HAVE_FILE_AIO)
-+
-+ { ngx_string("aio"),
-+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
-+ ngx_conf_set_flag_slot,
-+ NGX_HTTP_LOC_CONF_OFFSET,
-+ offsetof(ngx_http_copy_filter_conf_t, aio),
-+ NULL },
-+
-+#endif
-+
- ngx_null_command
- };
-
-@@ -104,6 +124,12 @@
- ctx->output_filter = (ngx_output_chain_filter_pt) ngx_http_next_filter;
- ctx->filter_ctx = r;
-
-+#if (NGX_HAVE_FILE_AIO)
-+ if (conf->aio) {
-+ ctx->aio = ngx_http_copy_aio_handler;
-+ }
-+#endif
-+
- r->request_output = 1;
- }
-
-@@ -125,6 +151,37 @@
- }
-
-
-+#if (NGX_HAVE_FILE_AIO)
-+
-+static void
-+ngx_http_copy_aio_handler(ngx_output_chain_ctx_t *ctx, ngx_file_t *file)
-+{
-+ ngx_http_request_t *r;
-+
-+ r = ctx->filter_ctx;
-+
-+ file->aio->event->data = r;
-+ file->aio->event->handler = ngx_http_copy_aio_event_handler;
-+
-+ r->connection->write->blocked = 1;
-+}
-+
-+
-+static void
-+ngx_http_copy_aio_event_handler(ngx_event_t *ev)
-+{
-+ ngx_http_request_t *r;
-+
-+ r = ev->data;
-+
-+ r->connection->write->blocked = 0;
-+
-+ r->connection->write->handler(r->connection->write);
-+}
-+
-+#endif
-+
-+
- static void *
- ngx_http_copy_filter_create_conf(ngx_conf_t *cf)
- {
-@@ -136,6 +193,9 @@
- }
-
- conf->bufs.num = 0;
-+#if (NGX_HAVE_FILE_AIO)
-+ conf->aio = NGX_CONF_UNSET;
-+#endif
-
- return conf;
- }
-@@ -148,6 +208,9 @@
- ngx_http_copy_filter_conf_t *conf = child;
-
- ngx_conf_merge_bufs_value(conf->bufs, prev->bufs, 1, 32768);
-+#if (NGX_HAVE_FILE_AIO)
-+ ngx_conf_merge_value(conf->aio, prev->aio, 0);
-+#endif
-
- return NULL;
- }
-Index: src/http/ngx_http_request.c
-===================================================================
---- src/http/ngx_http_request.c (revision 2356)
-+++ src/http/ngx_http_request.c (working copy)
-@@ -1868,6 +1868,11 @@
- return;
- }
-
-+ if (c->write->blocked) {
-+ (void) ngx_http_set_write_handler(r);
-+ return;
-+ }
-+
- ngx_http_close_request(r, 0);
- return;
- }
-@@ -1966,7 +1971,7 @@
- return;
- }
-
-- if (r->buffered || c->buffered || r->postponed) {
-+ if (r->buffered || c->buffered || r->postponed || c->write->blocked) {
-
- if (ngx_http_set_write_handler(r) != NGX_OK) {
- ngx_http_close_request(r, 0);
-@@ -2100,7 +2105,7 @@
- }
-
- } else {
-- if (wev->delayed) {
-+ if (wev->delayed || wev->blocked) {
- ngx_log_debug0(NGX_LOG_DEBUG_HTTP, wev->log, 0,
- "http writer delayed");
-
-Index: src/event/ngx_event.h
-===================================================================
---- src/event/ngx_event.h (revision 2356)
-+++ src/event/ngx_event.h (working copy)
-@@ -67,6 +67,7 @@
- unsigned timer_set:1;
-
- unsigned delayed:1;
-+ unsigned blocked:1;
-
- unsigned read_discarded:1;
-
-Index: src/os/unix/ngx_file_aio_read.c
-===================================================================
---- src/os/unix/ngx_file_aio_read.c (revision 0)
-+++ src/os/unix/ngx_file_aio_read.c (revision 0)
-@@ -0,0 +1,116 @@
-+
-+/*
-+ * Copyright (C) Igor Sysoev
-+ */
-+
-+
-+#include <ngx_config.h>
-+#include <ngx_core.h>
-+#include <ngx_event.h>
-+
-+#if (NGX_HAVE_KQUEUE)
-+#include <ngx_kqueue_module.h>
-+#endif
-+
-+
-+ssize_t
-+ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size, off_t offset)
-+{
-+ int n;
-+ ngx_event_t *ev;
-+ ngx_file_aio_ident_t *aio;
-+
-+ aio = file->aio;
-+ ev = aio->event;
-+
-+ if (!ev->ready) {
-+ ngx_log_error(NGX_LOG_ALERT, file->log, 0, "second aio post");
-+ return NGX_AGAIN;
-+ }
-+
-+ ngx_log_debug2(NGX_LOG_DEBUG_CORE, file->log, 0,
-+ "complete:%d size:%z", ev->complete, size);
-+
-+ if (!ev->complete) {
-+ aio->aiocb.aio_fildes = file->fd;
-+ aio->aiocb.aio_offset = offset;
-+ aio->aiocb.aio_buf = buf;
-+ aio->aiocb.aio_nbytes = size;
-+
-+#if (NGX_HAVE_KQUEUE)
-+ aio->aiocb.aio_sigevent.sigev_notify_kqueue = ngx_kqueue;
-+ aio->aiocb.aio_sigevent.sigev_notify = SIGEV_KEVENT;
-+ aio->aiocb.aio_sigevent.sigev_value.sigval_ptr = ev;
-+#endif
-+
-+ n = aio_read(&aio->aiocb);
-+
-+ if (n == -1) {
-+ n = ngx_errno;
-+
-+ if (n == NGX_EAGAIN || n == NGX_ENOSYS) {
-+ return NGX_BUSY;
-+ }
-+
-+ ngx_log_error(NGX_LOG_CRIT, file->log, n, "aio_read() failed");
-+ return NGX_ERROR;
-+ }
-+
-+ ngx_log_debug2(NGX_LOG_DEBUG_CORE, file->log, 0,
-+ "aio_read: fd:%d %d", file->fd, n);
-+
-+ ev->active = 1;
-+ ev->ready = 0;
-+ }
-+
-+ ev->complete = 0;
-+
-+ n = aio_error(&aio->aiocb);
-+
-+ ngx_log_debug2(NGX_LOG_DEBUG_CORE, file->log, 0,
-+ "aio_error: fd:%d %d", file->fd, n);
-+
-+ if (n == -1) {
-+ ngx_log_error(NGX_LOG_ALERT, file->log, ngx_errno,
-+ "aio_error() failed");
-+ return NGX_ERROR;
-+ }
-+
-+ if (n != 0) {
-+ if (n == NGX_EINPROGRESS) {
-+ if (ev->ready) {
-+ ngx_log_error(NGX_LOG_ALERT, file->log, n,
-+ "aio_read() still in progress");
-+ ev->ready = 0;
-+ }
-+ return NGX_AGAIN;
-+ }
-+
-+ ngx_log_error(NGX_LOG_CRIT, file->log, n, "aio_read() failed");
-+ ev->ready = 0;
-+ return NGX_ERROR;
-+ }
-+
-+ n = aio_return(&aio->aiocb);
-+
-+ if (n == -1) {
-+ ngx_log_error(NGX_LOG_ALERT, file->log, ngx_errno,
-+ "aio_return() failed");
-+ ev->ready = 0;
-+ return NGX_ERROR;
-+ }
-+
-+ ngx_log_debug2(NGX_LOG_DEBUG_CORE, file->log, 0,
-+ "aio_return: fd:%d %d", file->fd, n);
-+
-+ if (n == 0) {
-+ ev->ready = 0;
-+
-+ } else {
-+ ev->ready = 1;
-+ }
-+
-+ ev->active = 0;
-+
-+ return n;
-+}
-Index: src/os/unix/ngx_posix_config.h
-===================================================================
---- src/os/unix/ngx_posix_config.h (revision 2356)
-+++ src/os/unix/ngx_posix_config.h (working copy)
-@@ -112,6 +112,11 @@
- #endif
-
-
-+#if (NGX_HAVE_FILE_AIO)
-+#include <aio.h>
-+#endif
-+
-+
- #define NGX_LISTEN_BACKLOG 511
-
-
-Index: src/os/unix/ngx_linux_config.h
-===================================================================
---- src/os/unix/ngx_linux_config.h (revision 2356)
-+++ src/os/unix/ngx_linux_config.h (working copy)
-@@ -81,6 +81,11 @@
- #endif
-
-
-+#if (NGX_HAVE_FILE_AIO)
-+#include <aio.h>
-+#endif
-+
-+
- #define NGX_LISTEN_BACKLOG 511
-
-
-Index: src/os/unix/ngx_freebsd_config.h
-===================================================================
---- src/os/unix/ngx_freebsd_config.h (revision 2356)
-+++ src/os/unix/ngx_freebsd_config.h (working copy)
-@@ -73,13 +73,13 @@
- #endif
-
-
--#if (NGX_HAVE_AIO)
--#include <aio.h>
-+#if (NGX_HAVE_KQUEUE)
-+#include <sys/event.h>
- #endif
-
-
--#if (NGX_HAVE_KQUEUE)
--#include <sys/event.h>
-+#if (NGX_HAVE_FILE_AIO || NGX_HAVE_AIO)
-+#include <aio.h>
- #endif
-
-
-Index: src/os/unix/ngx_solaris_config.h
-===================================================================
---- src/os/unix/ngx_solaris_config.h (revision 2356)
-+++ src/os/unix/ngx_solaris_config.h (working copy)
-@@ -62,24 +62,24 @@
- #endif
-
-
--#if (NGX_HAVE_SENDFILE)
--#include <sys/sendfile.h>
-+#if (NGX_HAVE_DEVPOLL)
-+#include <sys/ioctl.h>
-+#include <sys/devpoll.h>
- #endif
-
-
--#if (NGX_HAVE_AIO)
--#include <aio.h>
-+#if (NGX_HAVE_EVENTPORT)
-+#include <port.h>
- #endif
-
-
--#if (NGX_HAVE_DEVPOLL)
--#include <sys/ioctl.h>
--#include <sys/devpoll.h>
-+#if (NGX_HAVE_SENDFILE)
-+#include <sys/sendfile.h>
- #endif
-
-
--#if (NGX_HAVE_EVENTPORT)
--#include <port.h>
-+#if (NGX_HAVE_FILE_AIO)
-+#include <aio.h>
- #endif
-
-
-Index: src/os/unix/ngx_files.h
-===================================================================
---- src/os/unix/ngx_files.h (revision 2356)
-+++ src/os/unix/ngx_files.h (working copy)
-@@ -287,4 +287,12 @@
- #define ngx_set_stderr_n "dup2(STDERR_FILENO)"
-
-
-+#if (NGX_HAVE_FILE_AIO)
-+
-+ssize_t ngx_file_aio_read(ngx_file_t *file, u_char *buf, size_t size,
-+ off_t offset);
-+
-+#endif
-+
-+
- #endif /* _NGX_FILES_H_INCLUDED_ */
-Index: src/core/ngx_output_chain.c
-===================================================================
---- src/core/ngx_output_chain.c (revision 2356)
-+++ src/core/ngx_output_chain.c (working copy)
-@@ -28,6 +28,11 @@
- #define NGX_NONE 1
-
-
-+#if (NGX_HAVE_FILE_AIO)
-+static ssize_t ngx_aio_read_file(ngx_output_chain_ctx_t *ctx, ngx_buf_t *src,
-+ ngx_buf_t *dst, size_t size);
-+#endif
-+
- static ngx_inline ngx_int_t
- ngx_output_chain_as_is(ngx_output_chain_ctx_t *ctx, ngx_buf_t *buf);
- static ngx_int_t ngx_output_chain_add_copy(ngx_pool_t *pool,
-@@ -519,8 +524,30 @@
-
- #endif
-
-+#if (NGX_HAVE_FILE_AIO)
-+
-+ if (ctx->aio) {
-+ n = ngx_aio_read_file(ctx, src, dst, size);
-+
-+ if (n == NGX_AGAIN) {
-+ return (ngx_int_t) n;
-+ }
-+
-+ } else {
-+ n = NGX_BUSY;
-+ }
-+
-+ if (n == NGX_BUSY) {
-+ n = ngx_read_file(src->file, dst->pos, (size_t) size,
-+ src->file_pos);
-+ }
-+
-+#else
-+
- n = ngx_read_file(src->file, dst->pos, (size_t) size, src->file_pos);
-
-+#endif
-+
- #if (NGX_HAVE_ALIGNED_DIRECTIO)
-
- if (ctx->unaligned) {
-@@ -545,12 +572,6 @@
- return (ngx_int_t) n;
- }
-
--#if (NGX_FILE_AIO_READ)
-- if (n == NGX_AGAIN) {
-- return (ngx_int_t) n;
-- }
--#endif
--
- if (n != size) {
- ngx_log_error(NGX_LOG_ALERT, ctx->pool->log, 0,
- ngx_read_file_n " read only %z of %O from \"%s\"",
-@@ -585,6 +606,45 @@
- }
-
-
-+#if (NGX_HAVE_FILE_AIO)
-+
-+static ssize_t
-+ngx_aio_read_file(ngx_output_chain_ctx_t *ctx, ngx_buf_t *src, ngx_buf_t *dst,
-+ size_t size)
-+{
-+ ssize_t n;
-+ ngx_file_t *file;
-+
-+ file = src->file;
-+
-+ if (file->aio == NULL) {
-+ file->aio = ngx_pcalloc(ctx->pool, sizeof(ngx_file_aio_ident_t));
-+ if (file->aio == NULL) {
-+ return NGX_ERROR;
-+ }
-+
-+ file->aio->event = ngx_pcalloc(ctx->pool, sizeof(ngx_event_t));
-+ if (file->aio->event == NULL) {
-+ return NGX_ERROR;
-+ }
-+
-+ file->aio->event->ready = 1;
-+ file->aio->event->log = file->log;
-+ file->aio->fd = file->fd;
-+ }
-+
-+ n = ngx_file_aio_read(src->file, dst->pos, size, src->file_pos);
-+
-+ if (n == NGX_AGAIN) {
-+ ctx->aio(ctx, src->file);
-+ }
-+
-+ return n;
-+}
-+
-+#endif
-+
-+
- ngx_int_t
- ngx_chain_writer(void *data, ngx_chain_t *in)
- {
-Index: src/core/ngx_buf.h
-===================================================================
---- src/core/ngx_buf.h (revision 2356)
-+++ src/core/ngx_buf.h (working copy)
-@@ -67,9 +67,16 @@
- } ngx_bufs_t;
-
-
-+typedef struct ngx_output_chain_ctx_s ngx_output_chain_ctx_t;
-+
- typedef ngx_int_t (*ngx_output_chain_filter_pt)(void *ctx, ngx_chain_t *in);
-
--typedef struct {
-+#if (NGX_HAVE_FILE_AIO)
-+typedef void (*ngx_output_chain_aio_pt)(ngx_output_chain_ctx_t *ctx,
-+ ngx_file_t *file);
-+#endif
-+
-+struct ngx_output_chain_ctx_s {
- ngx_buf_t *buf;
- ngx_chain_t *in;
- ngx_chain_t *free;
-@@ -90,9 +97,13 @@
-
- ngx_output_chain_filter_pt output_filter;
- void *filter_ctx;
--} ngx_output_chain_ctx_t;
-
-+#if (NGX_HAVE_FILE_AIO)
-+ ngx_output_chain_aio_pt aio;
-+#endif
-+};
-
-+
- typedef struct {
- ngx_chain_t *out;
- ngx_chain_t **last;
-Index: src/core/ngx_file.h
-===================================================================
---- src/core/ngx_file.h (revision 2356)
-+++ src/core/ngx_file.h (working copy)
-@@ -12,6 +12,22 @@
- #include <ngx_core.h>
-
-
-+#if (NGX_HAVE_FILE_AIO)
-+
-+typedef struct {
-+ ngx_connection_t *connection;
-+
-+ /* STUB: event is pointer because ngx_event_s definition is incomplete */
-+ ngx_event_t *event;
-+ void *dummy;
-+ ngx_fd_t fd;
-+
-+ struct aiocb aiocb;
-+} ngx_file_aio_ident_t;
-+
-+#endif
-+
-+
- struct ngx_file_s {
- ngx_fd_t fd;
- ngx_str_t name;
-@@ -22,10 +38,15 @@
-
- ngx_log_t *log;
-
-+#if (NGX_HAVE_FILE_AIO)
-+ ngx_file_aio_ident_t *aio;
-+#endif
-+
- unsigned valid_info:1;
- unsigned directio:1;
- };
-
-+
- #define NGX_MAX_PATH_LEVEL 3
-
-
-Index: auto/os/features
-===================================================================
---- auto/os/features (revision 2356)
-+++ auto/os/features (working copy)
-@@ -274,3 +274,21 @@
- CORE_LIBS="$CORE_LIBS -lrt"
- fi
- fi
-+
-+
-+if [ $NGX_FILE_AIO = YES ]; then
-+ ngx_feature="kqueue AIO support"
-+ ngx_feature_name="NGX_HAVE_FILE_AIO"
-+ ngx_feature_run=no
-+ ngx_feature_incs="#include <aio.h>"
-+ ngx_feature_path=
-+ ngx_feature_libs=
-+ ngx_feature_test="int n; struct aiocb iocb;
-+ iocb.aio_sigevent.sigev_notify = SIGEV_KEVENT;
-+ n = aio_read(&iocb)"
-+ . auto/feature
-+
-+ if [ $ngx_found = yes ]; then
-+ CORE_SRCS="$CORE_SRCS $FILE_AIO_SRCS"
-+ fi
-+fi
-Index: auto/sources
-===================================================================
---- auto/sources (revision 2356)
-+++ auto/sources (working copy)
-@@ -125,6 +125,7 @@
- src/os/unix/ngx_aio_read_chain.c \
- src/os/unix/ngx_aio_write_chain.c"
-
-+FILE_AIO_SRCS="src/os/unix/ngx_file_aio_read.c"
-
- UNIX_INCS="$CORE_INCS $EVENT_INCS src/os/unix"
-
-Index: auto/options
-===================================================================
---- auto/options (revision 2356)
-+++ auto/options (working copy)
-@@ -43,6 +43,7 @@
-
- USE_THREADS=NO
-
-+NGX_FILE_AIO=NO
- NGX_IPV6=NO
-
- HTTP=YES
-@@ -170,6 +171,7 @@
- #--with-threads=*) USE_THREADS="$value" ;;
- #--with-threads) USE_THREADS="pthreads" ;;
-
-+ --with-file-aio) NGX_FILE_AIO=YES ;;
- --with-ipv6) NGX_IPV6=YES ;;
-
- --without-http) HTTP=NO ;;
-@@ -305,6 +307,7 @@
- --with-poll_module enable poll module
- --without-poll_module disable poll module
-
-+ --with-file-aio enable file aio support
- --with-ipv6 enable ipv6 support
-
- --with-http_ssl_module enable ngx_http_ssl_module