nginx: bump to 1.9.6
In this bump as agreed with Thomas we are dropping out all the nginx 3rd party addons. In case you would like to see your 3rd party addon included please send a pull request and make sure it works with newest version. Signed-off-by: Luka Perkov <luka@openwrt.org>
This commit is contained in:
parent
3c7b3d57dd
commit
d44b07c279
12 changed files with 76 additions and 2527 deletions
|
@ -8,54 +8,33 @@
|
|||
menu "Configuration"
|
||||
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
|
||||
bool
|
||||
prompt "Enable SSL module"
|
||||
help
|
||||
Enable HTTPS/SSL support.
|
||||
default n
|
||||
|
||||
config NGINX_DAV
|
||||
bool
|
||||
prompt "Enable WebDAV module"
|
||||
help
|
||||
Enable the HTTP and WebDAV methods PUT, DELETE, MKCOL, COPY and MOVE.
|
||||
default n
|
||||
|
||||
config NGINX_LUA
|
||||
config NGINX_FLV
|
||||
bool
|
||||
prompt "Enable LUA module"
|
||||
prompt "Enable FLV module"
|
||||
help
|
||||
Enable support for LUA scripts.
|
||||
Provides the ability to seek within FLV (Flash) files using time-based offsets.
|
||||
default n
|
||||
|
||||
config NGINX_SPNEGO
|
||||
config NGINX_STUB_STATUS
|
||||
bool
|
||||
prompt "Enable SPNEGO module"
|
||||
prompt "Enable stub status module"
|
||||
help
|
||||
Enable support for Kerberos authentication via GSSAPI.
|
||||
|
||||
See https://github.com/stnoonan/spnego-http-auth-nginx-module
|
||||
for specific instructions. Make sure the keytab file is
|
||||
readable by user "nobody".
|
||||
|
||||
config NGINX_PCRE
|
||||
bool
|
||||
prompt "Enable PCRE library usage"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_CACHE
|
||||
bool
|
||||
prompt "Enable HTTP cache"
|
||||
Enable the stub status module which gives some status from the server.
|
||||
default n
|
||||
|
||||
config NGINX_HTTP_CHARSET
|
||||
bool
|
||||
|
@ -163,40 +142,34 @@ config NGINX_HTTP_BROWSER
|
|||
prompt "Enable HTTP browser module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_HASH
|
||||
bool
|
||||
prompt "Enable HTTP hash module"
|
||||
default y
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_IP_HASH
|
||||
bool
|
||||
prompt "Enable HTTP IP hash module"
|
||||
default y
|
||||
|
||||
config NGINX_NAXSI
|
||||
config NGINX_HTTP_UPSTREAM_LEAST_CONN
|
||||
bool
|
||||
prompt "Enable NAXSI module"
|
||||
select PACKAGE_nginx-naxsi
|
||||
prompt "Enable HTTP least conn module"
|
||||
default y
|
||||
help
|
||||
Enable support for NAXSI WAF.
|
||||
|
||||
config NGINX_PROXYPROTOCOL
|
||||
config NGINX_HTTP_UPSTREAM_KEEPALIVE
|
||||
bool
|
||||
prompt "Enable HAProxy proxyprotocol"
|
||||
select PACKAGE_nginx-proxyprotocol
|
||||
select NGINX_SSL
|
||||
default n
|
||||
help
|
||||
Enable support for PROXY PROTOCOL
|
||||
|
||||
config NGINX_SYSLOG
|
||||
bool
|
||||
prompt "Enable Syslog module"
|
||||
select PACKAGE_nginx-syslog
|
||||
prompt "Enable HTTP keepalive module"
|
||||
default y
|
||||
help
|
||||
Provides the ability log to a remote destination
|
||||
|
||||
config NGINX_HTTP_UPSTREAM_CHECK
|
||||
config NGINX_HTTP_CACHE
|
||||
bool
|
||||
select NGINX_SSL
|
||||
prompt "Enable HTTP upstream check module"
|
||||
default n
|
||||
prompt "Enable HTTP cache"
|
||||
default y
|
||||
|
||||
config NGINX_PCRE
|
||||
bool
|
||||
prompt "Enable PCRE library usage"
|
||||
default y
|
||||
|
||||
endmenu
|
||||
|
|
|
@ -8,27 +8,25 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=nginx
|
||||
PKG_VERSION:=1.4.7
|
||||
PKG_RELEASE:=4
|
||||
PKG_VERSION:=1.9.6
|
||||
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_MD5SUM:=aee151d298dcbfeb88b3f7dd3e7a4d17
|
||||
PKG_MD5SUM:=f6899825e7a8deadba4948ff84515ad6
|
||||
PKG_MAINTAINER:=Thomas Heil <heil@terminal-consulting.de>
|
||||
PKG_LICENSE:=2-clause BSD-like license
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/nginx-$(PKG_VERSION)
|
||||
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_INSTALL:=1
|
||||
|
||||
PKG_CONFIG_DEPENDS := \
|
||||
CONFIG_NGINX_STUB_STATUS \
|
||||
CONFIG_NGINX_FLV \
|
||||
CONFIG_NGINX_SSL \
|
||||
CONFIG_NGINX_DAV \
|
||||
CONFIG_NGINX_LUA \
|
||||
CONFIG_NGINX_SPNEGO \
|
||||
CONFIG_NGINX_PCRE \
|
||||
CONFIG_NGINX_HTTP_CACHE \
|
||||
CONFIG_NGINX_FLV \
|
||||
CONFIG_NGINX_STUB_STATUS \
|
||||
CONFIG_NGINX_HTTP_CHARSET \
|
||||
CONFIG_NGINX_HTTP_GZIP \
|
||||
CONFIG_NGINX_HTTP_SSI \
|
||||
|
@ -50,7 +48,13 @@ PKG_CONFIG_DEPENDS := \
|
|||
CONFIG_NGINX_HTTP_LIMIT_REQ \
|
||||
CONFIG_NGINX_HTTP_EMPTY_GIF \
|
||||
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_PCRE
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
|
@ -60,7 +64,7 @@ define Package/nginx
|
|||
SUBMENU:=Web Servers/Proxies
|
||||
TITLE:=Nginx web server
|
||||
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 +NGINX_SPNEGO:krb5-libs
|
||||
DEPENDS:=+NGINX_PCRE:libpcre +(NGINX_SSL||NGINX_HTTP_CACHE||NGINX_HTTP_AUTH_BASIC):libopenssl +NGINX_HTTP_GZIP:zlib +libpthread
|
||||
MENU:=1
|
||||
endef
|
||||
|
||||
|
@ -80,9 +84,6 @@ define Package/nginx/conffiles
|
|||
endef
|
||||
|
||||
ADDITIONAL_MODULES:=
|
||||
ifeq ($(CONFIG_NGINX_NAXSI),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-naxsi/naxsi_src
|
||||
endif
|
||||
ifeq ($(CONFIG_IPV6),y)
|
||||
ADDITIONAL_MODULES += --with-ipv6
|
||||
endif
|
||||
|
@ -98,13 +99,6 @@ endif
|
|||
ifeq ($(CONFIG_NGINX_DAV),y)
|
||||
ADDITIONAL_MODULES += --with-http_dav_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_LUA),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/lua-nginx
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_SPNEGO),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/spnego-http-auth-nginx-module
|
||||
TARGET_CFLAGS += -I $(STAGING_DIR)/usr/include/krb5
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_CACHE),y)
|
||||
ADDITIONAL_MODULES += --without-http-cache
|
||||
endif
|
||||
|
@ -174,23 +168,21 @@ endif
|
|||
ifneq ($(CONFIG_NGINX_HTTP_BROWSER),y)
|
||||
ADDITIONAL_MODULES += --without-http_browser_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_HASH),y)
|
||||
ADDITIONAL_MODULES += --without-http_upstream_hash_module
|
||||
endif
|
||||
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_IP_HASH),y)
|
||||
ADDITIONAL_MODULES += --without-http_upstream_ip_hash_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_PROXYPROTOCOL),y)
|
||||
ADDITIONAL_MODULES += --with-proxy-protocol
|
||||
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_LEAST_CONN),y)
|
||||
ADDITIONAL_MODULES += --without-http_upstream_least_conn_module
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_SYSLOG),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-syslog
|
||||
endif
|
||||
ifeq ($(CONFIG_NGINX_HTTP_UPSTREAM_CHECK),y)
|
||||
ADDITIONAL_MODULES += --add-module=$(PKG_BUILD_DIR)/nginx-upstream-check
|
||||
ifneq ($(CONFIG_NGINX_HTTP_UPSTREAM_KEEPALIVE),y)
|
||||
ADDITIONAL_MODULES += --without-http_upstream_keepalive_module
|
||||
endif
|
||||
|
||||
define Build/Configure
|
||||
# TODO: fix --crossbuild
|
||||
(cd $(PKG_BUILD_DIR) ;\
|
||||
$(if $(CONFIG_NGINX_LUA),LUA_INC=$(STAGING_DIR)/usr/include LUA_LIB=$(STAGING_DIR)/usr/lib) \
|
||||
( cd $(PKG_BUILD_DIR) ; \
|
||||
./configure \
|
||||
--crossbuild=Linux::$(ARCH) \
|
||||
--prefix=/usr \
|
||||
|
@ -205,7 +197,9 @@ define Build/Configure
|
|||
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
|
||||
--with-cc="$(TARGET_CC)" \
|
||||
--with-cc-opt="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
|
||||
--with-ld-opt="$(TARGET_LDFLAGS)" )
|
||||
--with-ld-opt="$(TARGET_LDFLAGS)" \
|
||||
--without-http_upstream_zone_module \
|
||||
)
|
||||
endef
|
||||
|
||||
define Package/nginx/install
|
||||
|
@ -217,137 +211,4 @@ define Package/nginx/install
|
|||
$(INSTALL_BIN) ./files/nginx.init $(1)/etc/init.d/nginx
|
||||
endef
|
||||
|
||||
define Build/Prepare
|
||||
$(call Build/Prepare/Default)
|
||||
$(if $(CONFIG_NGINX_LUA),$(call Prepare/lua-nginx))
|
||||
$(if $(CONFIG_NGINX_SPNEGO),$(call Prepare/spnego-http-auth-nginx-module))
|
||||
$(if $(CONFIG_NGINX_NAXSI),$(call Prepare/nginx-naxsi))
|
||||
$(if $(CONFIG_NGINX_SYSLOG),$(call Prepare/nginx-syslog))
|
||||
$(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
|
||||
|
||||
define Download/nginx-naxsi
|
||||
VERSION:=34dcb45fe4fdcb144c5258d83672f8e1e1c8db2e
|
||||
SUBDIR:=nginx-naxsi
|
||||
FILE:=nginx-naxsi-module-$(PKG_VERSION)-$$(VERSION).tar.gz
|
||||
URL:=https://github.com/nbs-system/naxsi.git
|
||||
PROTO:=git
|
||||
endef
|
||||
|
||||
define Prepare/nginx-naxsi
|
||||
$(eval $(call Download,nginx-naxsi))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
endef
|
||||
|
||||
define Package/nginx-naxsi/install
|
||||
$(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
|
||||
endef
|
||||
|
||||
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
|
||||
endef
|
||||
|
||||
define Prepare/nginx-syslog
|
||||
$(eval $(call Download,nginx-syslog))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
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
|
||||
|
||||
|
||||
define Download/spnego-http-auth-nginx-module
|
||||
VERSION:=c85a38c595
|
||||
SUBDIR:=spnego-http-auth-nginx-module
|
||||
FILE:=spnego-http-auth-nginx-module-$(PKG_VERSION)-$$(VERSION).tar.gz
|
||||
URL:=https://github.com/stnoonan/spnego-http-auth-nginx-module
|
||||
PROTO:=git
|
||||
endef
|
||||
|
||||
define Prepare/spnego-http-auth-nginx-module
|
||||
$(eval $(call Download,spnego-http-auth-nginx-module))
|
||||
gzip -dc $(DL_DIR)/$(FILE) | tar -C $(PKG_BUILD_DIR) $(TAR_OPTIONS)
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,nginx))
|
||||
$(eval $(call BuildPackage,nginx-naxsi))
|
||||
$(eval $(call BuildPackage,nginx-proxyprotocol))
|
||||
$(eval $(call BuildPackage,nginx-syslog))
|
||||
|
||||
|
|
|
@ -1,24 +1,17 @@
|
|||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2009-2012 OpenWrt.org
|
||||
# Copyright (C) 2015 OpenWrt.org
|
||||
|
||||
START=50
|
||||
NGINX_BIN=/usr/sbin/nginx
|
||||
|
||||
start() {
|
||||
mkdir -p /var/log/nginx
|
||||
mkdir -p /var/lib/nginx
|
||||
$NGINX_BIN
|
||||
USE_PROCD=1
|
||||
|
||||
start_service() {
|
||||
[ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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)
|
|
@ -1,35 +0,0 @@
|
|||
Index: nginx-1.4.7/src/os/unix/ngx_linux_config.h
|
||||
===================================================================
|
||||
--- nginx-1.4.7.orig/src/os/unix/ngx_linux_config.h
|
||||
+++ nginx-1.4.7/src/os/unix/ngx_linux_config.h
|
||||
@@ -51,7 +51,6 @@
|
||||
#include <malloc.h> /* memalign() */
|
||||
#include <limits.h> /* IOV_MAX */
|
||||
#include <sys/ioctl.h>
|
||||
-#include <sys/sysctl.h>
|
||||
#include <crypt.h>
|
||||
#include <sys/utsname.h> /* uname() */
|
||||
|
||||
--- nginx-1.2.7/src/os/unix/ngx_user.c
|
||||
+++ nginx-1.2.7-patched/src/os/unix/ngx_user.c
|
||||
@@ -31,8 +31,6 @@
|
||||
struct crypt_data cd;
|
||||
|
||||
cd.initialized = 0;
|
||||
- /* work around the glibc bug */
|
||||
- cd.current_salt[0] = ~salt[0];
|
||||
|
||||
value = crypt_r((char *) key, (char *) salt, &cd);
|
||||
|
||||
diff --git a/auto/lib/openssl/conf b/auto/lib/openssl/conf
|
||||
index 528ee17..73ef359 100644
|
||||
--- a/auto/lib/openssl/conf
|
||||
+++ b/auto/lib/openssl/conf
|
||||
@@ -47,7 +47,7 @@ else
|
||||
ngx_feature_run=no
|
||||
ngx_feature_incs="#include <openssl/ssl.h>"
|
||||
ngx_feature_path=
|
||||
- ngx_feature_libs="-lssl -lcrypto"
|
||||
+ ngx_feature_libs="-lssl -lcrypto -lz"
|
||||
ngx_feature_test="SSL_library_init()"
|
||||
. auto/feature
|
|
@ -11,7 +11,7 @@
|
|||
ngx_feature_libs=
|
||||
--- a/auto/cc/conf
|
||||
+++ b/auto/cc/conf
|
||||
@@ -155,7 +155,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
|
||||
@@ -178,7 +178,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
|
||||
else
|
||||
ngx_feature="C99 variadic macros"
|
||||
ngx_feature_name="NGX_HAVE_C99_VARIADIC_MACROS"
|
||||
|
@ -20,7 +20,7 @@
|
|||
ngx_feature_incs="#include <stdio.h>
|
||||
#define var(dummy, ...) sprintf(__VA_ARGS__)"
|
||||
ngx_feature_path=
|
||||
@@ -169,7 +169,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
|
||||
@@ -192,7 +192,7 @@ if [ "$NGX_PLATFORM" != win32 ]; then
|
||||
|
||||
ngx_feature="gcc variadic macros"
|
||||
ngx_feature_name="NGX_HAVE_GCC_VARIADIC_MACROS"
|
||||
|
@ -31,7 +31,7 @@
|
|||
ngx_feature_path=
|
||||
--- a/auto/os/linux
|
||||
+++ b/auto/os/linux
|
||||
@@ -48,7 +48,7 @@ fi
|
||||
@@ -36,7 +36,7 @@ fi
|
||||
|
||||
ngx_feature="epoll"
|
||||
ngx_feature_name="NGX_HAVE_EPOLL"
|
||||
|
@ -40,7 +40,7 @@
|
|||
ngx_feature_incs="#include <sys/epoll.h>"
|
||||
ngx_feature_path=
|
||||
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"
|
||||
ngx_feature="sendfile()"
|
||||
ngx_feature_name="NGX_HAVE_SENDFILE"
|
||||
|
@ -49,7 +49,7 @@
|
|||
ngx_feature_incs="#include <sys/sendfile.h>
|
||||
#include <errno.h>"
|
||||
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"
|
||||
ngx_feature="sendfile64()"
|
||||
ngx_feature_name="NGX_HAVE_SENDFILE64"
|
||||
|
@ -58,7 +58,7 @@
|
|||
ngx_feature_incs="#include <sys/sendfile.h>
|
||||
#include <errno.h>"
|
||||
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_name="NGX_HAVE_PR_SET_DUMPABLE"
|
||||
|
@ -69,7 +69,7 @@
|
|||
ngx_feature_libs=
|
||||
--- a/auto/unix
|
||||
+++ b/auto/unix
|
||||
@@ -618,7 +618,7 @@ ngx_feature_test="void *p; p = memalign(
|
||||
@@ -678,7 +678,7 @@ ngx_feature_test="void *p; p = memalign(
|
||||
|
||||
ngx_feature="mmap(MAP_ANON|MAP_SHARED)"
|
||||
ngx_feature_name="NGX_HAVE_MAP_ANON"
|
||||
|
@ -78,7 +78,7 @@
|
|||
ngx_feature_incs="#include <sys/mman.h>"
|
||||
ngx_feature_path=
|
||||
ngx_feature_libs=
|
||||
@@ -631,7 +631,7 @@ ngx_feature_test="void *p;
|
||||
@@ -691,7 +691,7 @@ ngx_feature_test="void *p;
|
||||
|
||||
ngx_feature='mmap("/dev/zero", MAP_SHARED)'
|
||||
ngx_feature_name="NGX_HAVE_MAP_DEVZERO"
|
||||
|
@ -87,7 +87,7 @@
|
|||
ngx_feature_incs="#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>"
|
||||
@@ -646,7 +646,7 @@ ngx_feature_test='void *p; int fd;
|
||||
@@ -706,7 +706,7 @@ ngx_feature_test='void *p; int fd;
|
||||
|
||||
ngx_feature="System V shared memory"
|
||||
ngx_feature_name="NGX_HAVE_SYSVSHM"
|
||||
|
@ -96,7 +96,7 @@
|
|||
ngx_feature_incs="#include <sys/ipc.h>
|
||||
#include <sys/shm.h>"
|
||||
ngx_feature_path=
|
||||
@@ -660,7 +660,7 @@ ngx_feature_test="int id;
|
||||
@@ -720,7 +720,7 @@ ngx_feature_test="int id;
|
||||
|
||||
ngx_feature="POSIX semaphores"
|
||||
ngx_feature_name="NGX_HAVE_POSIX_SEM"
|
||||
|
|
|
@ -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"
|
||||
|
File diff suppressed because it is too large
Load diff
|
@ -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;
|
||||
}
|
Loading…
Reference in a new issue