Merge pull request #5111 from wigyori/for-15.05-nginx

CC: nginx: upgrade to 1.12.1
This commit is contained in:
Thomas Heil 2017-11-13 10:28:25 +01:00 committed by GitHub
commit 5df3860f23
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 359 additions and 2437 deletions

View file

@ -1,5 +1,5 @@
# #
# Copyright (C) 2010-2012 OpenWrt.org # Copyright (C) 2010-2016 OpenWrt.org
# #
# This is free software, licensed under the GNU General Public License v2. # This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information. # See /LICENSE for more information.
@ -8,44 +8,33 @@
menu "Configuration" menu "Configuration"
depends on PACKAGE_nginx depends on PACKAGE_nginx
config NGINX_STUB_STATUS
bool
prompt "Enable stub status module"
help
Enable the stub status module which gives some status from the server.
config NGINX_FLV
bool
prompt "Enable FLV module"
help
Provides the ability to seek within FLV (Flash) files using time-based offsets.
config NGINX_SSL config NGINX_SSL
bool bool
prompt "Enable SSL module" prompt "Enable SSL module"
help help
Enable HTTPS/SSL support. Enable HTTPS/SSL support.
default n
config NGINX_DAV config NGINX_DAV
bool bool
prompt "Enable WebDAV module" prompt "Enable WebDAV module"
help help
Enable the HTTP and WebDAV methods PUT, DELETE, MKCOL, COPY and MOVE. Enable the HTTP and WebDAV methods PUT, DELETE, MKCOL, COPY and MOVE.
default n
config NGINX_LUA config NGINX_FLV
bool bool
prompt "Enable LUA module" prompt "Enable FLV module"
help help
Enable support for LUA scripts. Provides the ability to seek within FLV (Flash) files using time-based offsets.
default n
config NGINX_PCRE config NGINX_STUB_STATUS
bool bool
prompt "Enable PCRE library usage" prompt "Enable stub status module"
default y help
Enable the stub status module which gives some status from the server.
config NGINX_HTTP_CACHE default n
bool
prompt "Enable HTTP cache"
config NGINX_HTTP_CHARSET config NGINX_HTTP_CHARSET
bool bool
@ -77,6 +66,11 @@ config NGINX_HTTP_AUTH_BASIC
prompt "Enable HTTP auth basic" prompt "Enable HTTP auth basic"
default y default y
config NGINX_HTTP_AUTH_REQUEST
bool
prompt "Enable HTTP auth request module"
default n
config NGINX_HTTP_AUTOINDEX config NGINX_HTTP_AUTOINDEX
bool bool
prompt "Enable HTTP autoindex module" prompt "Enable HTTP autoindex module"
@ -153,40 +147,59 @@ config NGINX_HTTP_BROWSER
prompt "Enable HTTP browser module" prompt "Enable HTTP browser module"
default y default y
config NGINX_HTTP_UPSTREAM_HASH
bool
prompt "Enable HTTP hash module"
default y
config NGINX_HTTP_UPSTREAM_IP_HASH config NGINX_HTTP_UPSTREAM_IP_HASH
bool bool
prompt "Enable HTTP IP hash module" prompt "Enable HTTP IP hash module"
default y default y
config NGINX_HTTP_UPSTREAM_LEAST_CONN
bool
prompt "Enable HTTP least conn module"
default y
config NGINX_HTTP_UPSTREAM_KEEPALIVE
bool
prompt "Enable HTTP keepalive module"
default y
config NGINX_HTTP_CACHE
bool
prompt "Enable HTTP cache"
default y
config NGINX_HTTP_V2
bool
prompt "Enable HTTP_V2 module"
default n
config NGINX_PCRE
bool
prompt "Enable PCRE library usage"
default y
config NGINX_NAXSI config NGINX_NAXSI
bool bool
prompt "Enable NAXSI module" prompt "Enable NAXSI module"
select PACKAGE_nginx-naxsi
default y default y
help
Enable support for NAXSI WAF.
config NGINX_PROXYPROTOCOL config NGINX_LUA
bool bool
prompt "Enable HAProxy proxyprotocol" prompt "Enable Lua module"
select PACKAGE_nginx-proxyprotocol
select NGINX_SSL
default n default n
help
Enable support for PROXY PROTOCOL
config NGINX_SYSLOG config NGINX_HTTP_REAL_IP
bool bool
prompt "Enable Syslog module" prompt "Enable HTTP real ip module"
select PACKAGE_nginx-syslog default n
default y
help
Provides the ability log to a remote destination
config NGINX_HTTP_UPSTREAM_CHECK config NGINX_HTTP_SECURE_LINK
bool bool
select NGINX_SSL prompt "Enable HTTP secure link module"
prompt "Enable HTTP upstream check module"
default n default n
endmenu endmenu

View file

@ -1,5 +1,5 @@
# #
# Copyright (C) 2009-2012 OpenWrt.org # Copyright (C) 2012-2016 OpenWrt.org
# #
# This is free software, licensed under the GNU General Public License v2. # This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information. # See /LICENSE for more information.
@ -8,32 +8,32 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=nginx PKG_NAME:=nginx
PKG_VERSION:=1.4.7 PKG_VERSION:=1.12.1
PKG_RELEASE:=2 PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE:=nginx-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://nginx.org/download/ PKG_SOURCE_URL:=http://nginx.org/download/
PKG_MD5SUM:=aee151d298dcbfeb88b3f7dd3e7a4d17 PKG_HASH:=8793bf426485a30f91021b6b945a9fd8a84d87d17b566562c3797aba8fac76fb
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de> PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
PKG_LICENSE:=2-clause BSD-like license PKG_LICENSE:=2-clause BSD-like license
PKG_BUILD_DIR:=$(BUILD_DIR)/nginx-$(PKG_VERSION)
PKG_BUILD_PARALLEL:=1 PKG_BUILD_PARALLEL:=1
PKG_INSTALL:=1 PKG_INSTALL:=1
PKG_CONFIG_DEPENDS := \ PKG_CONFIG_DEPENDS := \
CONFIG_NGINX_STUB_STATUS \
CONFIG_NGINX_FLV \
CONFIG_NGINX_SSL \ CONFIG_NGINX_SSL \
CONFIG_NGINX_DAV \ CONFIG_NGINX_DAV \
CONFIG_NGINX_LUA \ CONFIG_NGINX_FLV \
CONFIG_NGINX_PCRE \ CONFIG_NGINX_STUB_STATUS \
CONFIG_NGINX_HTTP_CACHE \
CONFIG_NGINX_HTTP_CHARSET \ CONFIG_NGINX_HTTP_CHARSET \
CONFIG_NGINX_HTTP_GZIP \ CONFIG_NGINX_HTTP_GZIP \
CONFIG_NGINX_HTTP_SSI \ CONFIG_NGINX_HTTP_SSI \
CONFIG_NGINX_HTTP_USERID \ CONFIG_NGINX_HTTP_USERID \
CONFIG_NGINX_HTTP_ACCESS \ CONFIG_NGINX_HTTP_ACCESS \
CONFIG_NGINX_HTTP_AUTH_BASIC \ CONFIG_NGINX_HTTP_AUTH_BASIC \
CONFIG_NGINX_HTTP_AUTH_REQUEST \
CONFIG_NGINX_HTTP_AUTOINDEX \ CONFIG_NGINX_HTTP_AUTOINDEX \
CONFIG_NGINX_HTTP_GEO \ CONFIG_NGINX_HTTP_GEO \
CONFIG_NGINX_HTTP_MAP \ CONFIG_NGINX_HTTP_MAP \
@ -49,7 +49,18 @@ PKG_CONFIG_DEPENDS := \
CONFIG_NGINX_HTTP_LIMIT_REQ \ CONFIG_NGINX_HTTP_LIMIT_REQ \
CONFIG_NGINX_HTTP_EMPTY_GIF \ CONFIG_NGINX_HTTP_EMPTY_GIF \
CONFIG_NGINX_HTTP_BROWSER \ CONFIG_NGINX_HTTP_BROWSER \
CONFIG_NGINX_HTTP_UPSTREAM_IP_HASH CONFIG_NGINX_HTTP_UPSTREAM_HASH \
CONFIG_NGINX_HTTP_UPSTREAM_IP_HASH \
CONFIG_NGINX_HTTP_UPSTREAM_LEAST_CONN \
CONFIG_NGINX_HTTP_UPSTREAM_KEEPALIVE \
CONFIG_NGINX_HTTP_UPSTREAM_ZONE \
CONFIG_NGINX_HTTP_CACHE \
CONFIG_NGINX_HTTP_V2 \
CONFIG_NGINX_PCRE \
CONFIG_NGINX_NAXSI \
CONFIG_NGINX_LUA \
CONFIG_NGINX_HTTP_REAL_IP \
CONFIG_NGINX_HTTP_SECURE_LINK
include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/package.mk
@ -59,7 +70,7 @@ define Package/nginx
SUBMENU:=Web Servers/Proxies SUBMENU:=Web Servers/Proxies
TITLE:=Nginx web server TITLE:=Nginx web server
URL:=http://nginx.org/ URL:=http://nginx.org/
DEPENDS:=+NGINX_PCRE:libpcre +(NGINX_SSL||NGINX_HTTP_CACHE||NGINX_HTTP_AUTH_BASIC):libopenssl +NGINX_HTTP_GZIP:zlib +libpthread +NGINX_LUA:liblua DEPENDS:=+NGINX_PCRE:libpcre +(NGINX_SSL||NGINX_HTTP_CACHE||NGINX_HTTP_AUTH_BASIC):libopenssl +NGINX_HTTP_GZIP:zlib +NGINX_LUA:liblua +libpthread
MENU:=1 MENU:=1
endef endef
@ -72,7 +83,7 @@ define Package/nginx/config
source "$(SOURCE)/Config.in" source "$(SOURCE)/Config.in"
endef endef
config_files=nginx.conf mime.types fastcgi_params koi-utf koi-win win-utf config_files=nginx.conf mime.types
define Package/nginx/conffiles define Package/nginx/conffiles
/etc/nginx/ /etc/nginx/
@ -82,6 +93,9 @@ ADDITIONAL_MODULES:=
ifeq ($(CONFIG_NGINX_NAXSI),y) ifeq ($(CONFIG_NGINX_NAXSI),y)
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-naxsi/naxsi_src ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-naxsi/naxsi_src
endif endif
ifeq ($(CONFIG_NGINX_LUA),y)
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/lua-nginx
endif
ifeq ($(CONFIG_IPV6),y) ifeq ($(CONFIG_IPV6),y)
ADDITIONAL_MODULES += --with-ipv6 ADDITIONAL_MODULES += --with-ipv6
endif endif
@ -97,9 +111,6 @@ endif
ifeq ($(CONFIG_NGINX_DAV),y) ifeq ($(CONFIG_NGINX_DAV),y)
ADDITIONAL_MODULES += --with-http_dav_module ADDITIONAL_MODULES += --with-http_dav_module
endif endif
ifeq ($(CONFIG_NGINX_LUA),y)
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/lua-nginx
endif
ifneq ($(CONFIG_NGINX_HTTP_CACHE),y) ifneq ($(CONFIG_NGINX_HTTP_CACHE),y)
ADDITIONAL_MODULES += --without-http-cache ADDITIONAL_MODULES += --without-http-cache
endif endif
@ -108,6 +119,8 @@ ifneq ($(CONFIG_NGINX_PCRE),y)
endif endif
ifneq ($(CONFIG_NGINX_HTTP_CHARSET),y) ifneq ($(CONFIG_NGINX_HTTP_CHARSET),y)
ADDITIONAL_MODULES += --without-http_charset_module ADDITIONAL_MODULES += --without-http_charset_module
else
config_files += koi-utf koi-win win-utf
endif endif
ifneq ($(CONFIG_NGINX_HTTP_GZIP),y) ifneq ($(CONFIG_NGINX_HTTP_GZIP),y)
ADDITIONAL_MODULES += --without-http_gzip_module ADDITIONAL_MODULES += --without-http_gzip_module
@ -124,6 +137,9 @@ endif
ifneq ($(CONFIG_NGINX_HTTP_AUTH_BASIC),y) ifneq ($(CONFIG_NGINX_HTTP_AUTH_BASIC),y)
ADDITIONAL_MODULES += --without-http_auth_basic_module ADDITIONAL_MODULES += --without-http_auth_basic_module
endif endif
ifeq ($(CONFIG_NGINX_HTTP_AUTH_REQUEST),y)
ADDITIONAL_MODULES += --with-http_auth_request_module
endif
ifneq ($(CONFIG_NGINX_HTTP_AUTOINDEX),y) ifneq ($(CONFIG_NGINX_HTTP_AUTOINDEX),y)
ADDITIONAL_MODULES += --without-http_autoindex_module ADDITIONAL_MODULES += --without-http_autoindex_module
endif endif
@ -147,6 +163,8 @@ ifneq ($(CONFIG_NGINX_HTTP_PROXY),y)
endif endif
ifneq ($(CONFIG_NGINX_HTTP_FASTCGI),y) ifneq ($(CONFIG_NGINX_HTTP_FASTCGI),y)
ADDITIONAL_MODULES += --without-http_fastcgi_module ADDITIONAL_MODULES += --without-http_fastcgi_module
else
config_files += fastcgi_params
endif endif
ifneq ($(CONFIG_NGINX_HTTP_UWSGI),y) ifneq ($(CONFIG_NGINX_HTTP_UWSGI),y)
ADDITIONAL_MODULES += --without-http_uwsgi_module ADDITIONAL_MODULES += --without-http_uwsgi_module
@ -169,21 +187,32 @@ endif
ifneq ($(CONFIG_NGINX_HTTP_BROWSER),y) ifneq ($(CONFIG_NGINX_HTTP_BROWSER),y)
ADDITIONAL_MODULES += --without-http_browser_module ADDITIONAL_MODULES += --without-http_browser_module
endif endif
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_HASH),y)
ADDITIONAL_MODULES += --without-http_upstream_hash_module
endif
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_IP_HASH),y) ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_IP_HASH),y)
ADDITIONAL_MODULES += --without-http_upstream_ip_hash_module ADDITIONAL_MODULES += --without-http_upstream_ip_hash_module
endif endif
ifeq ($(CONFIG_NGINX_PROXYPROTOCOL),y) ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_LEAST_CONN),y)
ADDITIONAL_MODULES += --with-proxy-protocol ADDITIONAL_MODULES += --without-http_upstream_least_conn_module
endif endif
ifeq ($(CONFIG_NGINX_SYSLOG),y) ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_KEEPALIVE),y)
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-syslog ADDITIONAL_MODULES += --without-http_upstream_keepalive_module
endif endif
ifeq ($(CONFIG_NGINX_HTTP_UPSTREAM_CHECK),y) ifeq ($(CONFIG_NGINX_HTTP_V2),y)
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-upstream-check ADDITIONAL_MODULES += --with-http_v2_module
endif
ifeq ($(CONFIG_NGINX_HTTP_REAL_IP),y)
ADDITIONAL_MODULES += --with-http_realip_module
endif
ifeq ($(CONFIG_NGINX_HTTP_SECURE_LINK),y)
ADDITIONAL_MODULES += --with-http_secure_link_module
endif endif
TARGET_CFLAGS += -fvisibility=hidden -ffunction-sections -fdata-sections -DNGX_LUA_NO_BY_LUA_BLOCK
TARGET_LDFLAGS += -Wl,--gc-sections
define Build/Configure define Build/Configure
# TODO: fix --crossbuild
( cd $(PKG_BUILD_DIR) ; \ ( cd $(PKG_BUILD_DIR) ; \
$(if $(CONFIG_NGINX_LUA),LUA_INC=$(STAGING_DIR)/usr/include LUA_LIB=$(STAGING_DIR)/usr/lib) \ $(if $(CONFIG_NGINX_LUA),LUA_INC=$(STAGING_DIR)/usr/include LUA_LIB=$(STAGING_DIR)/usr/lib) \
./configure \ ./configure \
@ -200,7 +229,9 @@ define Build/Configure
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--with-cc="$(TARGET_CC)" \ --with-cc="$(TARGET_CC)" \
--with-cc-opt="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \ --with-cc-opt="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
--with-ld-opt="$(TARGET_LDFLAGS)" ) --with-ld-opt="$(TARGET_LDFLAGS)" \
--without-http_upstream_zone_module \
)
endef endef
define Package/nginx/install define Package/nginx/install
@ -210,80 +241,23 @@ define Package/nginx/install
$(INSTALL_DATA) $(addprefix $(PKG_INSTALL_DIR)/etc/nginx/,$(config_files)) $(1)/etc/nginx/ $(INSTALL_DATA) $(addprefix $(PKG_INSTALL_DIR)/etc/nginx/,$(config_files)) $(1)/etc/nginx/
$(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/nginx.init $(1)/etc/init.d/nginx $(INSTALL_BIN) ./files/nginx.init $(1)/etc/init.d/nginx
ifeq ($(CONFIG_NGINX_NAXSI),y)
$(INSTALL_DIR) $(1)/etc/nginx
$(INSTALL_BIN) $(PKG_BUILD_DIR)/nginx-naxsi/naxsi_config/naxsi_core.rules $(1)/etc/nginx
chmod 0640 $(1)/etc/nginx/naxsi_core.rules
endif
$(if $(CONFIG_NGINX_NAXSI),$($(INSTALL_BIN) $(PKG_BUILD_DIR)/nginx-naxsi/naxsi_config/naxsi_core.rules $(1)/etc/nginx))
$(if $(CONFIG_NGINX_NAXSI),$(chmod 0640 $(1)/etc/nginx/naxsi_core.rules))
endef endef
define Build/Prepare define Build/Prepare
$(call Build/Prepare/Default) $(call Build/Prepare/Default)
$(if $(CONFIG_NGINX_LUA),$(call Prepare/lua-nginx))
$(if $(CONFIG_NGINX_NAXSI),$(call Prepare/nginx-naxsi)) $(if $(CONFIG_NGINX_NAXSI),$(call Prepare/nginx-naxsi))
$(if $(CONFIG_NGINX_SYSLOG),$(call Prepare/nginx-syslog)) $(if $(CONFIG_NGINX_LUA),$(call Prepare/lua-nginx))
$(if $(CONFIG_NGINX_HTTP_UPSTREAM_CHECK),$(call Prepare/nginx-upstream-check))
endef
define Download/lua-nginx
VERSION:=d3ab0edd45bffe1b9a36abdf5bff544de436ccee
SUBDIR:=lua-nginx
FILE:=lua-nginx-module-$(PKG_VERSION)-$$(VERSION).tar.gz
URL:=https://github.com/chaoslawful/lua-nginx-module.git
PROTO:=git
endef
define Prepare/lua-nginx
$(eval $(call Download,lua-nginx))
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
$(call PatchDir,$(PKG_BUILD_DIR),./patches-lua-nginx)
endef
define Download/nginx-upstream-check
VERSION:=d40b9f956d9d978005bb15616d2f283d4e3d2031
SUBDIR:=nginx-upstream-check
FILE:=nginx-upstream-check-$(PKG_VERSION)-$$(VERSION).tar.gz
URL:=https://github.com/yaoweibin/nginx_upstream_check_module.git
PROTO:=git
endef
define Prepare/nginx-upstream-check
$(eval $(call Download,nginx-upstream-check))
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
$(call PatchDir,$(PKG_BUILD_DIR),./patches-nginx-upstream-check)
endef
define Package/nginx-naxsi
MENU:=1
$(call Package/nginx)
TITLE:=nginx-naxsi
DEPENDS:=nginx @NGINX_NAXSI
endef
define Package/nginx-naxsi/description
NGINX WAF NAXSI
endef
define Package/nginx-proxyprotocol
MENU:=1
$(call Package/nginx)
TITLE:=nginx
DEPENDS:=nginx @NGINX_PROXYPROTOCOL
endef
define Package/nginx-proxyprotocol/description
IMPLEMENT Proxy Protocol
endef
define Package/nginx-syslog
MENU:=1
$(call Package/nginx)
TITLE:=nginx-syslog
DEPENDS:=nginx @NGINX_SYSLOG
endef
define Package/nginx-syslog/description
IMPLEMENT Syslog Protocol
endef endef
define Download/nginx-naxsi define Download/nginx-naxsi
VERSION:=34dcb45fe4fdcb144c5258d83672f8e1e1c8db2e VERSION:=cf73f9c8664127252c2a4958d2e169516d3845a1
SUBDIR:=nginx-naxsi SUBDIR:=nginx-naxsi
FILE:=nginx-naxsi-module-$(PKG_VERSION)-$$(VERSION).tar.gz FILE:=nginx-naxsi-module-$(PKG_VERSION)-$$(VERSION).tar.gz
URL:=https://github.com/nbs-system/naxsi.git URL:=https://github.com/nbs-system/naxsi.git
@ -295,40 +269,18 @@ define Prepare/nginx-naxsi
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS) gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
endef endef
define Package/nginx-naxsi/install define Download/lua-nginx
$(INSTALL_DIR) $(1)/etc/nginx VERSION:=cdd2ae921f67bf396c743406493127be496e57ce
$(INSTALL_BIN) $(PKG_BUILD_DIR)/nginx-naxsi/naxsi_config/naxsi_core.rules $(1)/etc/nginx SUBDIR:=lua-nginx
chmod 0640 $(1)/etc/nginx/naxsi_core.rules FILE:=lua-nginx-module-$(PKG_VERSION)-$$(VERSION).tar.gz
endef URL:=https://github.com/openresty/lua-nginx-module.git
define Download/nginx-syslog
VERSION:=7abf48e52552c40a21463e1a8c608e0e575261cd
SUBDIR:=nginx-syslog
FILE:=nginx-syslog-module-$(PKG_VERSION)-$$(VERSION).tar.gz
URL:=https://github.com/splitice/nginx_syslog_patch.git
PROTO:=git PROTO:=git
endef endef
define Prepare/nginx-syslog define Prepare/lua-nginx
$(eval $(call Download,nginx-syslog)) $(eval $(call Download,lua-nginx))
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS) gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
$(call PatchDir,$(PKG_BUILD_DIR),./patches-lua-nginx)
endef endef
define Package/nginx-proxyprotocol/install
$(INSTALL_DIR) $(1)/etc/nginx
$(INSTALL_BIN) ./files/nginx.proxyprotocol.example $(1)/etc/nginx/nginx.conf.proxyprotocol
chmod 0640 $(1)/etc/nginx/nginx.conf.proxyprotocol
endef
define Package/nginx-syslog/install
$(INSTALL_DIR) $(1)/etc/nginx
$(INSTALL_BIN) ./files/nginx.syslog.example $(1)/etc/nginx/nginx.conf.syslog
chmod 0640 $(1)/etc/nginx/nginx.conf.syslog
endef
$(eval $(call BuildPackage,nginx)) $(eval $(call BuildPackage,nginx))
$(eval $(call BuildPackage,nginx-naxsi))
$(eval $(call BuildPackage,nginx-proxyprotocol))
$(eval $(call BuildPackage,nginx-syslog))

View file

@ -1,24 +1,17 @@
#!/bin/sh /etc/rc.common #!/bin/sh /etc/rc.common
# Copyright (C) 2009-2012 OpenWrt.org # Copyright (C) 2015 OpenWrt.org
START=50 START=80
NGINX_BIN=/usr/sbin/nginx
start() { USE_PROCD=1
mkdir -p /var/log/nginx
mkdir -p /var/lib/nginx start_service() {
$NGINX_BIN [ -d /var/log/nginx ] || mkdir -p /var/log/nginx
[ -d /var/lib/nginx ] || mkdir -p /var/lib/nginx
procd_open_instance
procd_set_param command /usr/sbin/nginx -c /etc/nginx/nginx.conf -g 'daemon off;'
procd_set_param file /etc/nginx/nginx.conf
procd_set_param respawn
procd_close_instance
} }
stop() {
$NGINX_BIN -s stop
}
reload() {
$NGINX_BIN -s reload
}
shutdown() {
$NGINX_BIN -s quit
}

View file

@ -1,40 +0,0 @@
worker_processes 1;
pid /tmp/nginx.pid;
daemon off;
master_process off;
error_log stderr debug_core;
events {
debug_connection <YOUR IPv4>;
debug_connection <YOUR IPV6>;
worker_connections 1024;
}
http {
default_type application/octet-stream;
client_body_temp_path /tmp/body 1;
access_log /tmp/nginx_access.log;
server {
# listen 8082 ssl;
# proxy protocol configuration for nginx 1.4.x:
listen 8082 accept_proxy_protocol=on;
# same with spdy enabled:
# listen 8082 spdy ssl accept_proxy_protocol=on;
listen [::]:8082 ipv6only=on;
ssl_certificate /your/certificate;
ssl_certificate_key /your/key;
server_name localhost;
# proxy protocol configuration for nginx 1.2.x:
# accept_proxy_protocol on;
location / {
proxy_pass http://127.0.0.1:8084;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 10s;
proxy_read_timeout 10s;
send_proxy_protocol on;
}
}
}

View file

@ -1,59 +0,0 @@
worker_processes 1;
syslog local6 nginx;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 80;
server_name localhost;
#send the log to syslog and file.
access_log syslog:notice|logs/host1.access.log main;
# pre 1.5.x
error_log syslog:notice|logs/host1.error.log;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.example.com;
access_log syslog:warn|logs/host2.access.log main;
error_log syslog:warn|logs/host2.error.log;
location / {
root html;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.test.com;
#send the log just to syslog.
access_log syslog:error main;
error_log syslog:error;
location / {
root html;
index index.html index.htm;
}
}
}

View file

@ -0,0 +1,195 @@
--- a/lua-nginx/src/ngx_http_lua_module.c
+++ b/lua-nginx/src/ngx_http_lua_module.c
@@ -157,14 +157,14 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
offsetof(ngx_http_lua_loc_conf_t, log_socket_errors),
NULL },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
{ ngx_string("init_by_lua_block"),
NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
ngx_http_lua_init_by_lua_block,
NGX_HTTP_MAIN_CONF_OFFSET,
0,
(void *) ngx_http_lua_init_by_inline },
-
+#endif
{ ngx_string("init_by_lua"),
NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
ngx_http_lua_init_by_lua,
@@ -178,14 +178,14 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_MAIN_CONF_OFFSET,
0,
(void *) ngx_http_lua_init_by_file },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
{ ngx_string("init_worker_by_lua_block"),
NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
ngx_http_lua_init_worker_by_lua_block,
NGX_HTTP_MAIN_CONF_OFFSET,
0,
(void *) ngx_http_lua_init_worker_by_inline },
-
+#endif
{ ngx_string("init_worker_by_lua"),
NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
ngx_http_lua_init_worker_by_lua,
@@ -201,6 +201,7 @@ static ngx_command_t ngx_http_lua_cmds[]
(void *) ngx_http_lua_init_worker_by_file },
#if defined(NDK) && NDK
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
/* set_by_lua $res { inline Lua code } [$arg1 [$arg2 [...]]] */
{ ngx_string("set_by_lua_block"),
NGX_HTTP_SRV_CONF|NGX_HTTP_SIF_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
@@ -209,7 +210,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_filter_set_by_lua_inline },
-
+#endif
/* set_by_lua $res <inline script> [$arg1 [$arg2 [...]]] */
{ ngx_string("set_by_lua"),
NGX_HTTP_SRV_CONF|NGX_HTTP_SIF_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
@@ -237,7 +238,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_rewrite_handler_inline },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
/* rewrite_by_lua_block { <inline script> } */
{ ngx_string("rewrite_by_lua_block"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
@@ -246,7 +247,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_rewrite_handler_inline },
-
+#endif
/* access_by_lua "<inline script>" */
{ ngx_string("access_by_lua"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
@@ -255,7 +256,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_access_handler_inline },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
/* access_by_lua_block { <inline script> } */
{ ngx_string("access_by_lua_block"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
@@ -264,7 +265,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_access_handler_inline },
-
+#endif
/* content_by_lua "<inline script>" */
{ ngx_string("content_by_lua"),
NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
@@ -272,7 +273,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_content_handler_inline },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
/* content_by_lua_block { <inline script> } */
{ ngx_string("content_by_lua_block"),
NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
@@ -280,7 +281,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_content_handler_inline },
-
+#endif
/* log_by_lua <inline script> */
{ ngx_string("log_by_lua"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
@@ -289,7 +290,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_log_handler_inline },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
/* log_by_lua_block { <inline script> } */
{ ngx_string("log_by_lua_block"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
@@ -298,7 +299,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_log_handler_inline },
-
+#endif
{ ngx_string("rewrite_by_lua_file"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|NGX_CONF_TAKE1,
@@ -353,7 +354,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_header_filter_inline },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
/* header_filter_by_lua_block { <inline script> } */
{ ngx_string("header_filter_by_lua_block"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
@@ -362,7 +363,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_header_filter_inline },
-
+#endif
{ ngx_string("header_filter_by_lua_file"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|NGX_CONF_TAKE1,
@@ -378,7 +379,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_body_filter_inline },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
/* body_filter_by_lua_block { <inline script> } */
{ ngx_string("body_filter_by_lua_block"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
@@ -387,7 +388,7 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_body_filter_inline },
-
+#endif
{ ngx_string("body_filter_by_lua_file"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
|NGX_CONF_TAKE1,
@@ -395,14 +396,14 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
0,
(void *) ngx_http_lua_body_filter_file },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
{ ngx_string("balancer_by_lua_block"),
NGX_HTTP_UPS_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
ngx_http_lua_balancer_by_lua_block,
NGX_HTTP_SRV_CONF_OFFSET,
0,
(void *) ngx_http_lua_balancer_handler_inline },
-
+#endif
{ ngx_string("balancer_by_lua_file"),
NGX_HTTP_UPS_CONF|NGX_CONF_TAKE1,
ngx_http_lua_balancer_by_lua,
@@ -509,14 +510,14 @@ static ngx_command_t ngx_http_lua_cmds[]
NGX_HTTP_LOC_CONF_OFFSET,
offsetof(ngx_http_lua_loc_conf_t, ssl_ciphers),
NULL },
-
+#ifndef NGX_LUA_NO_BY_LUA_BLOCK
{ ngx_string("ssl_certificate_by_lua_block"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
ngx_http_lua_ssl_cert_by_lua_block,
NGX_HTTP_SRV_CONF_OFFSET,
0,
(void *) ngx_http_lua_ssl_cert_handler_inline },
-
+#endif
{ ngx_string("ssl_certificate_by_lua_file"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_CONF_TAKE1,
ngx_http_lua_ssl_cert_by_lua,

View file

@ -1,21 +0,0 @@
--- a/lua-nginx/config
+++ b/lua-nginx/config
@@ -1,5 +1,5 @@
ngx_feature="Lua library"
-ngx_feature_libs="-llua -lm"
+ngx_feature_libs="-llua -lm -ldl"
ngx_feature_name=
ngx_feature_run=no
ngx_feature_incs="#include <lauxlib.h>"
@@ -47,9 +47,9 @@ else
ngx_feature="Lua library in $LUA_LIB and $LUA_INC (specified by the LUA_LIB and LUA_INC env)"
ngx_feature_path="$LUA_INC"
if [ $NGX_RPATH = YES ]; then
- ngx_feature_libs="-R$LUA_LIB -L$LUA_LIB -llua -lm"
+ ngx_feature_libs="-R$LUA_LIB -L$LUA_LIB -llua -lm -ldl"
else
- ngx_feature_libs="-L$LUA_LIB -llua -lm"
+ ngx_feature_libs="-L$LUA_LIB -llua -lm -ldl"
fi
. auto/feature

View file

@ -1,209 +0,0 @@
diff --git a/src/http/modules/ngx_http_upstream_ip_hash_module.c b/src/http/modules/ngx_http_upstream_ip_hash_module.c
index 89ccc2b..a552044 100644
--- a/src/http/modules/ngx_http_upstream_ip_hash_module.c
+++ b/src/http/modules/ngx_http_upstream_ip_hash_module.c
@@ -9,6 +9,10 @@
#include <ngx_core.h>
#include <ngx_http.h>
+#if (NGX_UPSTREAM_CHECK_MODULE)
+#include "ngx_http_upstream_check_handler.h"
+#endif
+
typedef struct {
/* the round robin data must be first */
@@ -208,6 +212,12 @@ ngx_http_upstream_get_ip_hash_peer(ngx_peer_connection_t *pc, void *data)
if (!peer->down) {
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
+ "get ip_hash peer, check_index: %ui",
+ peer->check_index);
+ if (!ngx_http_check_peer_down(peer->check_index)) {
+#endif
if (peer->max_fails == 0 || peer->fails < peer->max_fails) {
break;
}
@@ -216,6 +226,9 @@ ngx_http_upstream_get_ip_hash_peer(ngx_peer_connection_t *pc, void *data)
peer->checked = now;
break;
}
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ }
+#endif
}
iphp->rrp.tried[n] |= m;
diff --git a/src/http/modules/ngx_http_upstream_least_conn_module.c b/src/http/modules/ngx_http_upstream_least_conn_module.c
index 21156ae..c57393d 100644
--- a/src/http/modules/ngx_http_upstream_least_conn_module.c
+++ b/src/http/modules/ngx_http_upstream_least_conn_module.c
@@ -9,6 +9,10 @@
#include <ngx_core.h>
#include <ngx_http.h>
+#if (NGX_UPSTREAM_CHECK_MODULE)
+#include "ngx_http_upstream_check_handler.h"
+#endif
+
typedef struct {
ngx_uint_t *conns;
@@ -203,6 +207,16 @@ ngx_http_upstream_get_least_conn_peer(ngx_peer_connection_t *pc, void *data)
continue;
}
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
+ "get least_conn peer, check_index: %ui",
+ peer->check_index);
+
+ if (ngx_http_check_peer_down(peer->check_index)) {
+ continue;
+ }
+#endif
+
if (peer->max_fails
&& peer->fails >= peer->max_fails
&& now - peer->checked <= peer->fail_timeout)
@@ -256,6 +270,16 @@ ngx_http_upstream_get_least_conn_peer(ngx_peer_connection_t *pc, void *data)
continue;
}
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, pc->log, 0,
+ "get least_conn peer, check_index: %ui",
+ peer->check_index);
+
+ if (ngx_http_check_peer_down(peer->check_index)) {
+ continue;
+ }
+#endif
+
if (lcp->conns[i] * best->weight != lcp->conns[p] * peer->weight) {
continue;
}
diff --git a/src/http/ngx_http_upstream_round_robin.c b/src/http/ngx_http_upstream_round_robin.c
index 4b78cff..f077b46 100644
--- a/src/http/ngx_http_upstream_round_robin.c
+++ b/src/http/ngx_http_upstream_round_robin.c
@@ -9,6 +9,9 @@
#include <ngx_core.h>
#include <ngx_http.h>
+#if (NGX_UPSTREAM_CHECK_MODULE)
+#include "ngx_http_upstream_check_handler.h"
+#endif
static ngx_int_t ngx_http_upstream_cmp_servers(const void *one,
const void *two);
@@ -87,7 +90,17 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
peers->peer[n].weight = server[i].weight;
peers->peer[n].effective_weight = server[i].weight;
peers->peer[n].current_weight = 0;
- n++;
+
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ if (!server[i].down) {
+ peers->peer[n].check_index =
+ ngx_http_check_add_peer(cf, us, &server[i].addrs[j]);
+ }
+ else {
+ peers->peer[n].check_index = (ngx_uint_t) NGX_ERROR;
+ }
+#endif
+ n++;
}
}
@@ -145,6 +158,17 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
backup->peer[n].max_fails = server[i].max_fails;
backup->peer[n].fail_timeout = server[i].fail_timeout;
backup->peer[n].down = server[i].down;
+
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ if (!server[i].down) {
+ backup->peer[n].check_index =
+ ngx_http_check_add_peer(cf, us, &server[i].addrs[j]);
+ }
+ else {
+ backup->peer[n].check_index = (ngx_uint_t) NGX_ERROR;
+ }
+#endif
+
n++;
}
}
@@ -206,6 +230,9 @@ ngx_http_upstream_init_round_robin(ngx_conf_t *cf,
peers->peer[i].current_weight = 0;
peers->peer[i].max_fails = 1;
peers->peer[i].fail_timeout = 10;
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ peers->peer[i].check_index = (ngx_uint_t) NGX_ERROR;
+#endif
}
us->peer.data = peers;
@@ -323,6 +350,9 @@ ngx_http_upstream_create_round_robin_peer(ngx_http_request_t *r,
peers->peer[0].current_weight = 0;
peers->peer[0].max_fails = 1;
peers->peer[0].fail_timeout = 10;
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ peers->peer[0].check_index = (ngx_uint_t) NGX_ERROR;
+#endif
} else {
@@ -356,6 +386,9 @@ ngx_http_upstream_create_round_robin_peer(ngx_http_request_t *r,
peers->peer[i].current_weight = 0;
peers->peer[i].max_fails = 1;
peers->peer[i].fail_timeout = 10;
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ peers->peer[i].check_index = (ngx_uint_t) NGX_ERROR;
+#endif
}
}
@@ -434,6 +467,12 @@ ngx_http_upstream_get_round_robin_peer(ngx_peer_connection_t *pc, void *data)
goto failed;
}
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ if (ngx_http_check_peer_down(peer->check_index)) {
+ goto failed;
+ }
+#endif
+
} else {
/* there are several peers */
@@ -531,6 +570,12 @@ ngx_http_upstream_get_peer(ngx_http_upstream_rr_peer_data_t *rrp)
continue;
}
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ if (ngx_http_check_peer_down(peer->check_index)) {
+ continue;
+ }
+#endif
+
if (peer->max_fails
&& peer->fails >= peer->max_fails
&& now - peer->checked <= peer->fail_timeout)
diff --git a/src/http/ngx_http_upstream_round_robin.h b/src/http/ngx_http_upstream_round_robin.h
index 3f8cbf8..1613168 100644
--- a/src/http/ngx_http_upstream_round_robin.h
+++ b/src/http/ngx_http_upstream_round_robin.h
@@ -30,6 +30,10 @@ typedef struct {
ngx_uint_t max_fails;
time_t fail_timeout;
+#if (NGX_UPSTREAM_CHECK_MODULE)
+ ngx_uint_t check_index;
+#endif
+
ngx_uint_t down; /* unsigned down:1; */
#if (NGX_HTTP_SSL)

View file

@ -11,7 +11,7 @@
ngx_feature_libs= ngx_feature_libs=
--- a/auto/cc/conf --- a/auto/cc/conf
+++ b/auto/cc/conf +++ b/auto/cc/conf
@@ -155,7 +155,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then @@ -200,7 +200,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
else else
ngx_feature="C99 variadic macros" ngx_feature="C99 variadic macros"
ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS" ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS"
@ -20,7 +20,7 @@
ngx_feature_incs="#include <stdio.h> ngx_feature_incs="#include <stdio.h>
#define var(dummy, ...) sprintf(__VA_ARGS__)" #define var(dummy, ...) sprintf(__VA_ARGS__)"
ngx_feature_path= ngx_feature_path=
@@ -169,7 +169,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then @@ -214,7 +214,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
ngx_feature="gcc variadic macros" ngx_feature="gcc variadic macros"
ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS" ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS"
@ -31,7 +31,7 @@
ngx_feature_path= ngx_feature_path=
--- a/auto/os/linux --- a/auto/os/linux
+++ b/auto/os/linux +++ b/auto/os/linux
@@ -48,7 +48,7 @@ fi @@ -36,7 +36,7 @@ fi
ngx_feature="epoll" ngx_feature="epoll"
ngx_feature_name="NGX_HAVE_EPOLL" ngx_feature_name="NGX_HAVE_EPOLL"
@ -40,7 +40,7 @@
ngx_feature_incs="#include <sys/epoll.h>" ngx_feature_incs="#include <sys/epoll.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
@@ -73,7 +73,7 @@ fi @@ -93,7 +93,7 @@ ngx_feature_test="int fd; struct stat sb
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE" CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE"
ngx_feature="sendfile()" ngx_feature="sendfile()"
ngx_feature_name="NGX_HAVE_SENDFILE" ngx_feature_name="NGX_HAVE_SENDFILE"
@ -49,7 +49,7 @@
ngx_feature_incs="#include <sys/sendfile.h> ngx_feature_incs="#include <sys/sendfile.h>
#include <errno.h>" #include <errno.h>"
ngx_feature_path= ngx_feature_path=
@@ -94,7 +94,7 @@ fi @@ -114,7 +114,7 @@ fi
CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" CC_AUX_FLAGS="$cc_aux_flags -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64"
ngx_feature="sendfile64()" ngx_feature="sendfile64()"
ngx_feature_name="NGX_HAVE_SENDFILE64" ngx_feature_name="NGX_HAVE_SENDFILE64"
@ -58,7 +58,7 @@
ngx_feature_incs="#include <sys/sendfile.h> ngx_feature_incs="#include <sys/sendfile.h>
#include <errno.h>" #include <errno.h>"
ngx_feature_path= ngx_feature_path=
@@ -112,7 +112,7 @@ ngx_include="sys/prctl.h"; . auto/includ @@ -132,7 +132,7 @@ ngx_include="sys/prctl.h"; . auto/includ
ngx_feature="prctl(PR_SET_DUMPABLE)" ngx_feature="prctl(PR_SET_DUMPABLE)"
ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE" ngx_feature_name="NGX_HAVE_PR_SET_DUMPABLE"
@ -69,7 +69,7 @@
ngx_feature_libs= ngx_feature_libs=
--- a/auto/unix --- a/auto/unix
+++ b/auto/unix +++ b/auto/unix
@@ -618,7 +618,7 @@ ngx_feature_test="void *p; p = memalign( @@ -735,7 +735,7 @@ ngx_feature_test="void *p; p = memalign(
ngx_feature="mmap(MAP_ANON|MAP_SHARED)" ngx_feature="mmap(MAP_ANON|MAP_SHARED)"
ngx_feature_name="NGX_HAVE_MAP_ANON" ngx_feature_name="NGX_HAVE_MAP_ANON"
@ -78,7 +78,7 @@
ngx_feature_incs="#include <sys/mman.h>" ngx_feature_incs="#include <sys/mman.h>"
ngx_feature_path= ngx_feature_path=
ngx_feature_libs= ngx_feature_libs=
@@ -631,7 +631,7 @@ ngx_feature_test="void *p; @@ -748,7 +748,7 @@ ngx_feature_test="void *p;
ngx_feature='mmap("/dev/zero", MAP_SHARED)' ngx_feature='mmap("/dev/zero", MAP_SHARED)'
ngx_feature_name="NGX_HAVE_MAP_DEVZERO" ngx_feature_name="NGX_HAVE_MAP_DEVZERO"
@ -87,7 +87,7 @@
ngx_feature_incs="#include <sys/mman.h> ngx_feature_incs="#include <sys/mman.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <fcntl.h>" #include <fcntl.h>"
@@ -646,7 +646,7 @@ ngx_feature_test='void *p; int fd; @@ -763,7 +763,7 @@ ngx_feature_test='void *p; int fd;
ngx_feature="System V shared memory" ngx_feature="System V shared memory"
ngx_feature_name="NGX_HAVE_SYSVSHM" ngx_feature_name="NGX_HAVE_SYSVSHM"
@ -96,7 +96,7 @@
ngx_feature_incs="#include <sys/ipc.h> ngx_feature_incs="#include <sys/ipc.h>
#include <sys/shm.h>" #include <sys/shm.h>"
ngx_feature_path= ngx_feature_path=
@@ -660,7 +660,7 @@ ngx_feature_test="int id; @@ -777,7 +777,7 @@ ngx_feature_test="int id;
ngx_feature="POSIX semaphores" ngx_feature="POSIX semaphores"
ngx_feature_name="NGX_HAVE_POSIX_SEM" ngx_feature_name="NGX_HAVE_POSIX_SEM"

View file

@ -1,6 +1,6 @@
--- a/auto/types/sizeof --- a/auto/types/sizeof
+++ b/auto/types/sizeof +++ b/auto/types/sizeof
@@ -25,8 +25,13 @@ $NGX_INCLUDE_UNISTD_H @@ -25,8 +25,14 @@ $NGX_INCLUDE_UNISTD_H
$NGX_INCLUDE_INTTYPES_H $NGX_INCLUDE_INTTYPES_H
$NGX_INCLUDE_AUTO_CONFIG_H $NGX_INCLUDE_AUTO_CONFIG_H
@ -10,8 +10,9 @@
+ 'Y', '3', 'p', 'M', '\n' + 'Y', '3', 'p', 'M', '\n'
+}; +};
+ +
int main() { int main(void) {
- printf("%d", (int) sizeof($ngx_type)); - printf("%d", (int) sizeof($ngx_type));
+ printf("dummy use of object_code_block to avoid gc-section: %c", object_code_block[0]);
return 0; return 0;
} }

View file

@ -1,33 +0,0 @@
--- a/auto/endianness
+++ b/auto/endianness
@@ -21,7 +21,7 @@ int main() {
END
-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS \
+ngx_test="$CC $NGX_CC_OPT $CC_TEST_FLAGS $CC_AUX_FLAGS \
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_LD_OPT $ngx_feature_libs"
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"
--- a/auto/feature
+++ b/auto/feature
@@ -39,7 +39,7 @@ int main() {
END
-ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \
+ngx_test="$CC $NGX_CC_OPT $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_TEST_LD_OPT $ngx_feature_libs"
ngx_feature_inc_path=
--- a/auto/include
+++ b/auto/include
@@ -27,7 +27,7 @@ int main() {
END
-ngx_test="$CC -o $NGX_AUTOTEST $NGX_AUTOTEST.c"
+ngx_test="$CC $NGX_CC_OPT -o $NGX_AUTOTEST $NGX_AUTOTEST.c"
eval "$ngx_test >> $NGX_AUTOCONF_ERR 2>&1"

View file

@ -0,0 +1,11 @@
--- a/src/os/unix/ngx_process.h
+++ b/src/os/unix/ngx_process.h
@@ -44,7 +44,7 @@ typedef struct {
} ngx_exec_ctx_t;
-#define NGX_MAX_PROCESSES 1024
+#define NGX_MAX_PROCESSES 8
#define NGX_PROCESS_NORESPAWN -1
#define NGX_PROCESS_JUST_SPAWN -2

File diff suppressed because it is too large Load diff

View file

@ -1,698 +0,0 @@
Index: nginx-1.4.7/src/core/ngx_cycle.c
===================================================================
--- nginx-1.4.7.orig/src/core/ngx_cycle.c
+++ nginx-1.4.7/src/core/ngx_cycle.c
@@ -85,6 +85,12 @@ ngx_init_cycle(ngx_cycle_t *old_cycle)
cycle->pool = pool;
cycle->log = log;
cycle->new_log.log_level = NGX_LOG_ERR;
+#if (NGX_ENABLE_SYSLOG)
+ cycle->new_log.facility = SYSLOG_FACILITY;
+ cycle->new_log.facility = ERR_SYSLOG_PRIORITY;
+ cycle->new_log.syslog_on = 0;
+ cycle->new_log.syslog_set = 0;
+#endif
cycle->old_cycle = old_cycle;
cycle->conf_prefix.len = old_cycle->conf_prefix.len;
Index: nginx-1.4.7/src/core/ngx_log.c
===================================================================
--- nginx-1.4.7.orig/src/core/ngx_log.c
+++ nginx-1.4.7/src/core/ngx_log.c
@@ -10,6 +10,15 @@
static char *ngx_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
+#if (NGX_ENABLE_SYSLOG)
+static char *ngx_set_syslog(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
+void log_exit(ngx_cycle_t *cycle);
+
+typedef struct{
+ ngx_str_t name;
+ ngx_int_t macro;
+} ngx_string_to_macro_t;
+#endif
static ngx_command_t ngx_errlog_commands[] = {
@@ -21,6 +30,15 @@ static ngx_command_t ngx_errlog_command
0,
NULL},
+#if (NGX_ENABLE_SYSLOG)
+ {ngx_string("syslog"),
+ NGX_MAIN_CONF|NGX_CONF_TAKE12,
+ ngx_set_syslog,
+ 0,
+ 0,
+ NULL},
+#endif
+
ngx_null_command
};
@@ -43,7 +61,11 @@ ngx_module_t ngx_errlog_module = {
NULL, /* init thread */
NULL, /* exit thread */
NULL, /* exit process */
- NULL, /* exit master */
+#if (NGX_ENABLE_SYSLOG)
+ log_exit, /* exit master */
+#else
+ NULL,
+#endif
NGX_MODULE_V1_PADDING
};
@@ -52,6 +74,48 @@ static ngx_log_t ngx_log;
static ngx_open_file_t ngx_log_file;
ngx_uint_t ngx_use_stderr = 1;
+#if (NGX_ENABLE_SYSLOG)
+static ngx_string_to_macro_t ngx_syslog_facilities[] = {
+ {ngx_string("auth"), LOG_AUTH},
+#if !(NGX_SOLARIS)
+ {ngx_string("authpriv"), LOG_AUTHPRIV},
+#endif
+ {ngx_string("cron"), LOG_CRON},
+ {ngx_string("daemon"), LOG_DAEMON},
+#if !(NGX_SOLARIS)
+ {ngx_string("ftp"), LOG_FTP},
+#endif
+ {ngx_string("kern"), LOG_KERN},
+ {ngx_string("local0"), LOG_LOCAL0},
+ {ngx_string("local1"), LOG_LOCAL1},
+ {ngx_string("local2"), LOG_LOCAL2},
+ {ngx_string("local3"), LOG_LOCAL3},
+ {ngx_string("local4"), LOG_LOCAL4},
+ {ngx_string("local5"), LOG_LOCAL5},
+ {ngx_string("local6"), LOG_LOCAL6},
+ {ngx_string("local7"), LOG_LOCAL7},
+ {ngx_string("lpr"), LOG_LPR},
+ {ngx_string("mail"), LOG_MAIL},
+ {ngx_string("news"), LOG_NEWS},
+ {ngx_string("syslog"), LOG_SYSLOG},
+ {ngx_string("user"), LOG_USER},
+ {ngx_string("uucp"), LOG_UUCP},
+ { ngx_null_string, 0}
+};
+
+static ngx_string_to_macro_t ngx_syslog_priorities[] = {
+ {ngx_string("emerg"), LOG_EMERG},
+ {ngx_string("alert"), LOG_ALERT},
+ {ngx_string("crit"), LOG_CRIT},
+ {ngx_string("error"), LOG_ERR},
+ {ngx_string("err"), LOG_ERR},
+ {ngx_string("warn"), LOG_WARNING},
+ {ngx_string("notice"),LOG_NOTICE},
+ {ngx_string("info"), LOG_INFO},
+ {ngx_string("debug"), LOG_DEBUG},
+ { ngx_null_string, 0}
+};
+#endif
static ngx_str_t err_levels[] = {
ngx_null_string,
@@ -89,11 +153,16 @@ ngx_log_error_core(ngx_uint_t level, ngx
va_list args;
#endif
u_char *p, *last, *msg;
+#if (NGX_ENABLE_SYSLOG)
+ u_char *errstr_syslog;
+#endif
u_char errstr[NGX_MAX_ERROR_STR];
+#if !(NGX_ENABLE_SYSLOG)
if (log->file->fd == NGX_INVALID_FILE) {
return;
}
+#endif
last = errstr + NGX_MAX_ERROR_STR;
@@ -102,6 +171,10 @@ ngx_log_error_core(ngx_uint_t level, ngx
p = errstr + ngx_cached_err_log_time.len;
+#if (NGX_ENABLE_SYSLOG)
+ errstr_syslog = p;
+#endif
+
p = ngx_slprintf(p, last, " [%V] ", &err_levels[level]);
/* pid#tid */
@@ -140,11 +213,27 @@ ngx_log_error_core(ngx_uint_t level, ngx
ngx_linefeed(p);
+#if (NGX_ENABLE_SYSLOG)
+ if (log->file != NULL && log->file->name.len != 0) {
(void) ngx_write_fd(log->file->fd, errstr, p - errstr);
+ }
+
+ /* Don't send the debug level info to syslog */
+ if (log->syslog_on && level < NGX_LOG_DEBUG) {
+ /* write to syslog */
+ syslog(log->priority, "%.*s", (int)(p - errstr_syslog), errstr_syslog);
+ }
+#else
+ (void) ngx_write_fd(log->file->fd, errstr, p - errstr);
+#endif
if (!ngx_use_stderr
|| level > NGX_LOG_WARN
+#if (NGX_ENABLE_SYSLOG)
+ || (log->file != NULL && log->file->fd == ngx_stderr))
+#else
|| log->file->fd == ngx_stderr)
+#endif
{
return;
}
@@ -367,6 +456,50 @@ ngx_log_create(ngx_cycle_t *cycle, ngx_s
}
+#if (NGX_ENABLE_SYSLOG)
+ngx_int_t
+ngx_log_get_priority(ngx_conf_t *cf, ngx_str_t *priority)
+{
+ ngx_int_t p = 0;
+ ngx_uint_t n, match = 0;
+
+ for (n = 0; ngx_syslog_priorities[n].name.len != 0; n++) {
+ if (ngx_strncmp(priority->data, ngx_syslog_priorities[n].name.data,
+ ngx_syslog_priorities[n].name.len) == 0) {
+ p = ngx_syslog_priorities[n].macro;
+ match = 1;
+ }
+ }
+
+ if (!match) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "invalid syslog priority \"%V\"", priority);
+ return -1;
+ }
+
+ return p;
+}
+
+
+char *
+ngx_log_set_priority(ngx_conf_t *cf, ngx_str_t *priority, ngx_log_t *log)
+{
+ log->priority = ERR_SYSLOG_PRIORITY;
+
+ if (priority->len == 0) {
+ return NGX_CONF_OK;
+ }
+
+ log->priority = ngx_log_get_priority(cf, priority);
+ if (log->priority == (-1)) {
+ return NGX_CONF_ERROR;
+ }
+
+ return NGX_CONF_OK;
+}
+#endif
+
+
char *
ngx_log_set_levels(ngx_conf_t *cf, ngx_log_t *log)
{
@@ -429,6 +562,13 @@ static char *
ngx_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{
ngx_str_t *value, name;
+#if (NGX_ENABLE_SYSLOG)
+ u_char *off = NULL;
+ ngx_str_t priority;
+
+ ngx_str_null(&name);
+ ngx_str_null(&priority);
+#endif
if (cf->cycle->new_log.file) {
return "is duplicate";
@@ -436,7 +576,44 @@ ngx_error_log(ngx_conf_t *cf, ngx_comman
value = cf->args->elts;
+#if (NGX_ENABLE_SYSLOG)
+ if (ngx_strncmp(value[1].data, "syslog", sizeof("syslog") - 1) == 0) {
+ if (!cf->cycle->new_log.syslog_set) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "You must set the syslog directive and enable it first.");
+ return NGX_CONF_ERROR;
+ }
+
+ cf->cycle->new_log.syslog_on = 1;
+
+ if (value[1].data[sizeof("syslog") - 1] == ':') {
+ priority.len = value[1].len - sizeof("syslog");
+ priority.data = value[1].data + sizeof("syslog");
+
+ off = (u_char *)ngx_strchr(priority.data, (int) '|');
+ if (off != NULL) {
+ priority.len = off - priority.data;
+
+ off++;
+ name.len = value[1].data + value[1].len - off;
+ name.data = off;
+ }
+ }
+ else {
+ if (value[1].len > sizeof("syslog")) {
+ name.len = value[1].len - sizeof("syslog");
+ name.data = value[1].data + sizeof("syslog");
+ }
+ }
+
+ if (ngx_log_set_priority(cf, &priority, &cf->cycle->new_log) == NGX_CONF_ERROR) {
+ return NGX_CONF_ERROR;
+ }
+ }
+ else if (ngx_strcmp(value[1].data, "stderr") == 0) {
+#else
if (ngx_strcmp(value[1].data, "stderr") == 0) {
+#endif
ngx_str_null(&name);
} else {
@@ -457,3 +634,63 @@ ngx_error_log(ngx_conf_t *cf, ngx_comman
return ngx_log_set_levels(cf, &cf->cycle->new_log);
}
+
+
+#if (NGX_ENABLE_SYSLOG)
+
+#define SYSLOG_IDENT_NAME "nginx"
+
+static char *
+ngx_set_syslog(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
+{
+ char *program;
+ ngx_str_t *value;
+ ngx_int_t facility, match = 0;
+ ngx_uint_t n;
+
+ value = cf->args->elts;
+
+ if (cf->cycle->new_log.syslog_set) {
+ return "is duplicate";
+ }
+
+ cf->cycle->new_log.syslog_set = 1;
+
+ for (n = 0; ngx_syslog_facilities[n].name.len != 0; n++) {
+ if (ngx_strncmp(value[1].data, ngx_syslog_facilities[n].name.data,
+ ngx_syslog_facilities[n].name.len) == 0) {
+ facility = ngx_syslog_facilities[n].macro;
+ match = 1;
+ break;
+ }
+ }
+
+ if (match) {
+ cf->cycle->new_log.facility = facility;
+ cf->cycle->new_log.priority = ERR_SYSLOG_PRIORITY;
+ }
+ else {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "invalid syslog facility \"%V\"", &value[1]);
+ return NGX_CONF_ERROR;
+ }
+
+ program = SYSLOG_IDENT_NAME;
+ if (cf->args->nelts > 2) {
+ program = (char *) value[2].data;
+ }
+
+ openlog(program, LOG_ODELAY, facility);
+
+ return NGX_CONF_OK;
+}
+
+
+void log_exit(ngx_cycle_t *cycle)
+{
+ if (cycle->new_log.syslog_set) {
+ closelog();
+ }
+}
+#endif
+
Index: nginx-1.4.7/src/core/ngx_log.h
===================================================================
--- nginx-1.4.7.orig/src/core/ngx_log.h
+++ nginx-1.4.7/src/core/ngx_log.h
@@ -12,6 +12,13 @@
#include <ngx_config.h>
#include <ngx_core.h>
+#if (NGX_ENABLE_SYSLOG)
+#include <syslog.h>
+
+#define SYSLOG_FACILITY LOG_LOCAL5
+#define ERR_SYSLOG_PRIORITY LOG_ERR
+#endif
+
#define NGX_LOG_STDERR 0
#define NGX_LOG_EMERG 1
@@ -61,6 +68,13 @@ struct ngx_log_s {
*/
char *action;
+
+#if (NGX_ENABLE_SYSLOG)
+ ngx_int_t priority;
+ ngx_int_t facility;
+ unsigned syslog_on:1; /* unsigned :1 syslog_on */
+ unsigned syslog_set:1; /*unsigned :1 syslog_set */
+#endif
};
@@ -221,6 +235,10 @@ void ngx_cdecl ngx_log_debug_core(ngx_lo
ngx_log_t *ngx_log_init(u_char *prefix);
ngx_log_t *ngx_log_create(ngx_cycle_t *cycle, ngx_str_t *name);
+#if (NGX_ENABLE_SYSLOG)
+ngx_int_t ngx_log_get_priority(ngx_conf_t *cf, ngx_str_t *priority);
+char * ngx_log_set_priority(ngx_conf_t *cf, ngx_str_t *priority, ngx_log_t *log);
+#endif
char *ngx_log_set_levels(ngx_conf_t *cf, ngx_log_t *log);
void ngx_cdecl ngx_log_abort(ngx_err_t err, const char *fmt, ...);
void ngx_cdecl ngx_log_stderr(ngx_err_t err, const char *fmt, ...);
Index: nginx-1.4.7/src/http/modules/ngx_http_log_module.c
===================================================================
--- nginx-1.4.7.orig/src/http/modules/ngx_http_log_module.c
+++ nginx-1.4.7/src/http/modules/ngx_http_log_module.c
@@ -13,6 +13,11 @@
#include <zlib.h>
#endif
+#if (NGX_ENABLE_SYSLOG)
+#include <syslog.h>
+
+#define HTTP_SYSLOG_PRIORITY LOG_NOTICE
+#endif
typedef struct ngx_http_log_op_s ngx_http_log_op_t;
@@ -67,6 +72,11 @@ typedef struct {
time_t disk_full_time;
time_t error_log_time;
ngx_http_log_fmt_t *format;
+
+#if (NGX_ENABLE_SYSLOG)
+ ngx_int_t priority;
+ unsigned syslog_on:1; /* unsigned :1 syslog_on */
+#endif
} ngx_http_log_t;
@@ -348,6 +358,14 @@ ngx_http_log_write(ngx_http_request_t *r
time_t now;
ssize_t n;
ngx_err_t err;
+
+#if (NGX_ENABLE_SYSLOG)
+ n = 0;
+ if (log->syslog_on) {
+ syslog(log->priority, "%.*s", (int)len, buf);
+ }
+#endif
+
#if (NGX_ZLIB)
ngx_http_log_buf_t *buffer;
#endif
@@ -355,6 +373,9 @@ ngx_http_log_write(ngx_http_request_t *r
if (log->script == NULL) {
name = log->file->name.data;
+#if (NGX_ENABLE_SYSLOG)
+ if (name != NULL) {
+#endif
#if (NGX_ZLIB)
buffer = log->file->data;
@@ -367,7 +388,11 @@ ngx_http_log_write(ngx_http_request_t *r
#else
n = ngx_write_fd(log->file->fd, buf, len);
#endif
-
+#if (NGX_ENABLE_SYSLOG)
+ } else {
+ n = len;
+ }
+#endif
} else {
name = NULL;
n = ngx_http_log_script_write(r, log->script, &name, buf, len);
@@ -1068,6 +1093,10 @@ ngx_http_log_merge_loc_conf(ngx_conf_t *
log->script = NULL;
log->disk_full_time = 0;
log->error_log_time = 0;
+#if (NGX_ENABLE_SYSLOG)
+ log->priority = HTTP_SYSLOG_PRIORITY;
+ log->syslog_on = 0;
+#endif
lmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_log_module);
fmt = lmcf->formats.elts;
@@ -1096,6 +1125,13 @@ ngx_http_log_set_log(ngx_conf_t *cf, ngx
ngx_http_log_main_conf_t *lmcf;
ngx_http_script_compile_t sc;
+#if (NGX_ENABLE_SYSLOG)
+ u_char *off;
+ ngx_str_t priority;
+ ngx_uint_t syslog_on = 0;
+ name = priority = (ngx_str_t)ngx_null_string;
+#endif
+
value = cf->args->elts;
if (ngx_strcmp(value[1].data, "off") == 0) {
@@ -1108,6 +1144,38 @@ ngx_http_log_set_log(ngx_conf_t *cf, ngx
"invalid parameter \"%V\"", &value[2]);
return NGX_CONF_ERROR;
}
+#if (NGX_ENABLE_SYSLOG)
+ else if (ngx_strncmp(value[1].data, "syslog", sizeof("syslog") - 1) == 0) {
+ if (!cf->cycle->new_log.syslog_set) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "You must set the syslog directive and enable it first.");
+ return NGX_CONF_ERROR;
+ }
+
+ syslog_on = 1;
+ if (value[1].data[sizeof("syslog") - 1] == ':') {
+ priority.len = value[1].len - sizeof("syslog");
+ priority.data = value[1].data + sizeof("syslog");
+
+ off = (u_char*) ngx_strchr(priority.data, '|');
+ if (off != NULL) {
+ priority.len = off - priority.data;
+
+ off++;
+ name.len = value[1].data + value[1].len - off;
+ name.data = off;
+ }
+ }
+ else {
+ if (value[1].len > sizeof("syslog")) {
+ name.len = value[1].len - sizeof("syslog");
+ name.data = value[1].data + sizeof("syslog");
+ }
+ }
+ } else {
+ name = value[1];
+ }
+#endif
if (llcf->logs == NULL) {
llcf->logs = ngx_array_create(cf->pool, 2, sizeof(ngx_http_log_t));
@@ -1125,6 +1193,52 @@ ngx_http_log_set_log(ngx_conf_t *cf, ngx
ngx_memzero(log, sizeof(ngx_http_log_t));
+#if (NGX_ENABLE_SYSLOG)
+ log->syslog_on = syslog_on;
+
+ if (priority.len == 0) {
+ log->priority = HTTP_SYSLOG_PRIORITY;
+ }
+ else {
+ log->priority = ngx_log_get_priority(cf, &priority);
+ }
+
+ if (name.len != 0) {
+ n = ngx_http_script_variables_count(&name);
+
+ if (n == 0) {
+ log->file = ngx_conf_open_file(cf->cycle, &name);
+ if (log->file == NULL) {
+ return NGX_CONF_ERROR;
+ }
+ } else {
+ if (ngx_conf_full_name(cf->cycle, &name, 0) != NGX_OK) {
+ return NGX_CONF_ERROR;
+ }
+ log->script = ngx_pcalloc(cf->pool, sizeof(ngx_http_log_script_t));
+ if (log->script == NULL) {
+ return NGX_CONF_ERROR;
+ }
+ ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
+ sc.cf = cf;
+ sc.source = &name;
+ sc.lengths = &log->script->lengths;
+ sc.values = &log->script->values;
+ sc.variables = n;
+ sc.complete_lengths = 1;
+ sc.complete_values = 1;
+ if (ngx_http_script_compile(&sc) != NGX_OK) {
+ return NGX_CONF_ERROR;
+ }
+ }
+ }
+ else {
+ log->file = ngx_conf_open_file(cf->cycle, &name);
+ if (log->file == NULL) {
+ return NGX_CONF_ERROR;
+ }
+ }
+#else
n = ngx_http_script_variables_count(&value[1]);
if (n == 0) {
@@ -1157,6 +1271,7 @@ ngx_http_log_set_log(ngx_conf_t *cf, ngx
return NGX_CONF_ERROR;
}
}
+#endif
if (cf->args->nelts >= 3) {
name = value[2];
Index: nginx-1.4.7/src/http/ngx_http_core_module.c
===================================================================
--- nginx-1.4.7.orig/src/http/ngx_http_core_module.c
+++ nginx-1.4.7/src/http/ngx_http_core_module.c
@@ -1462,6 +1462,9 @@ ngx_http_update_location_config(ngx_http
if (r == r->main) {
ngx_http_set_connection_log(r->connection, clcf->error_log);
+#if (NGX_ENABLE_SYSLOG)
+ r->connection->log->priority = clcf->error_log->priority;
+#endif
}
if ((ngx_io.flags & NGX_IO_SENDFILE) && clcf->sendfile) {
@@ -4901,6 +4904,15 @@ ngx_http_core_error_log(ngx_conf_t *cf,
ngx_str_t *value, name;
+#if (NGX_ENABLE_SYSLOG)
+ u_char *off = NULL;
+ ngx_int_t syslog_on = 0;
+ ngx_str_t priority;
+
+ name = priority = (ngx_str_t) ngx_null_string;
+#endif
+
+
if (clcf->error_log) {
return "is duplicate";
}
@@ -4910,6 +4922,36 @@ ngx_http_core_error_log(ngx_conf_t *cf,
if (ngx_strcmp(value[1].data, "stderr") == 0) {
ngx_str_null(&name);
+#if (NGX_ENABLE_SYSLOG)
+ } else if (ngx_strncmp(value[1].data, "syslog", sizeof("syslog") - 1) == 0) {
+ if (!cf->cycle->new_log.syslog_set) {
+ ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+ "You must set the syslog directive and enable it first.");
+ return NGX_CONF_ERROR;
+ }
+
+ syslog_on = 1;
+
+ if (value[1].data[sizeof("syslog") - 1] == ':') {
+ priority.len = value[1].len - sizeof("syslog");
+ priority.data = value[1].data + sizeof("syslog");
+
+ off = (u_char*) ngx_strchr(priority.data, '|');
+ if (off != NULL) {
+ priority.len = off - priority.data;
+
+ off++;
+ name.len = value[1].data + value[1].len - off;
+ name.data = off;
+ }
+ }
+ else {
+ if (value[1].len > sizeof("syslog")) {
+ name.len = value[1].len - sizeof("syslog");
+ name.data = value[1].data + sizeof("syslog");
+ }
+ }
+#endif
} else {
name = value[1];
}
@@ -4919,6 +4961,17 @@ ngx_http_core_error_log(ngx_conf_t *cf,
return NGX_CONF_ERROR;
}
+#if (NGX_ENABLE_SYSLOG)
+ if (syslog_on) {
+ clcf->error_log->syslog_on = 1;
+ if (ngx_log_set_priority(cf, &priority, clcf->error_log) == NGX_CONF_ERROR) {
+ return NGX_CONF_ERROR;
+ }
+ }
+
+ clcf->error_log->log_level = 0;
+#endif
+
if (cf->args->nelts == 2) {
clcf->error_log->log_level = NGX_LOG_ERR;
return NGX_CONF_OK;
Index: nginx-1.4.7/src/http/ngx_http_request.c
===================================================================
--- nginx-1.4.7.orig/src/http/ngx_http_request.c
+++ nginx-1.4.7/src/http/ngx_http_request.c
@@ -533,6 +533,9 @@ ngx_http_create_request(ngx_connection_t
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
ngx_http_set_connection_log(r->connection, clcf->error_log);
+#if (NGX_ENABLE_SYSLOG)
+ c->log->priority = clcf->error_log->priority;
+#endif
r->header_in = hc->nbusy ? hc->busy[0] : c->buffer;
@@ -872,6 +875,9 @@ ngx_http_ssl_servername(ngx_ssl_conn_t *
clcf = ngx_http_get_module_loc_conf(hc->conf_ctx, ngx_http_core_module);
ngx_http_set_connection_log(c, clcf->error_log);
+#if (NGX_ENABLE_SYSLOG)
+ c->log->priority = clcf->error_log->priority;
+#endif
sscf = ngx_http_get_module_srv_conf(hc->conf_ctx, ngx_http_ssl_module);
@@ -2077,6 +2083,9 @@ ngx_http_set_virtual_server(ngx_http_req
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
ngx_http_set_connection_log(r->connection, clcf->error_log);
+#if (NGX_ENABLE_SYSLOG)
+ r->connection->log->priority = clcf->error_log->priority;
+#endif
return NGX_OK;
}