Compare commits

...

No commits in common. "c8-stream-1.16" and "a8-stream-1.20_with_geoip2" have entirely different histories.

13 changed files with 315 additions and 218 deletions

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
SOURCES/nginx-1.16.1.tar.gz SOURCES/nginx-1.20.1.tar.gz
SOURCES/poweredby.png SOURCES/ngx_http_geoip2_module-3.4.tar

View File

@ -1,2 +1,2 @@
77ce4d26481b62f7a9d83e399454df0912f01a4b SOURCES/nginx-1.16.1.tar.gz 6b4ab4eff3c617e133819f43fdfc14708e593a79 SOURCES/nginx-1.20.1.tar.gz
2ec82988cd0d9b1304c95a16b28eff70f0f69abc SOURCES/poweredby.png 9b0fa43e2935e350d70681be4420b7983540eebd SOURCES/ngx_http_geoip2_module-3.4.tar

View File

@ -7,7 +7,7 @@
<style type="text/css"> <style type="text/css">
/*<![CDATA[*/ /*<![CDATA[*/
body { body {
background-color: #fff; background-color: #FAF5F5;
color: #000; color: #000;
font-size: 0.9em; font-size: 0.9em;
font-family: sans-serif,helvetica; font-family: sans-serif,helvetica;
@ -15,19 +15,19 @@
padding: 0; padding: 0;
} }
:link { :link {
color: #c00; color: #0B2335;
} }
:visited { :visited {
color: #c00; color: #0B2335;
} }
a:hover { a:hover {
color: #f50; color: #0069DA;
} }
h1 { h1 {
text-align: center; text-align: center;
margin: 0; margin: 0;
padding: 0.6em 2em 0.4em; padding: 0.6em 2em 0.4em;
background-color: #900; background-color: #0B2335;
color: #fff; color: #fff;
font-weight: normal; font-weight: normal;
font-size: 1.75em; font-size: 1.75em;
@ -39,7 +39,7 @@
} }
h2 { h2 {
text-align: center; text-align: center;
background-color: #900; background-color: #0B2335;
font-size: 1.1em; font-size: 1.1em;
font-weight: bold; font-weight: bold;
color: #fff; color: #fff;
@ -64,7 +64,7 @@
} }
img { img {
border: 2px solid #fff; border: 2px solid #FAF5F5;
padding: 2px; padding: 2px;
margin: 2px; margin: 2px;
} }
@ -92,7 +92,7 @@
<p>Something has triggered missing webpage on your <p>Something has triggered missing webpage on your
website. This is the default 404 error page for website. This is the default 404 error page for
<strong>nginx</strong> that is distributed with <strong>nginx</strong> that is distributed with
Red Hat Enterprise Linux. It is located AlmaLinux. It is located
<tt>/usr/share/nginx/html/404.html</tt></p> <tt>/usr/share/nginx/html/404.html</tt></p>
<p>You should customize this error page for your own <p>You should customize this error page for your own
@ -100,7 +100,7 @@
the <strong>nginx</strong> configuration file the <strong>nginx</strong> configuration file
<tt>/etc/nginx/nginx.conf</tt>.</p> <tt>/etc/nginx/nginx.conf</tt>.</p>
<p>For information on Red Hat Enterprise Linux, please visit the <a href="http://www.redhat.com/">Red Hat, Inc. website</a>. The documentation for Red Hat Enterprise Linux is <a href="http://www.redhat.com/docs/manuals/enterprise/">available on the Red Hat, Inc. website</a>.</p> <p>For information on AlmaLinux, please visit the <a href="http://www.almalinux.org/">AlmaLinux website</a>.</p>
</div> </div>
</div> </div>
@ -110,10 +110,10 @@
src="nginx-logo.png" src="nginx-logo.png"
alt="[ Powered by nginx ]" alt="[ Powered by nginx ]"
width="121" height="32" /></a> width="121" height="32" /></a>
<a href="http://www.redhat.com/"><img <a href="http://www.almalinux.org/"><img
src="poweredby.png" src="poweredby.png"
alt="[ Powered by Red Hat Enterprise Linux ]" alt="[ Powered by AlmaLinux ]"
width="88" height="31" /></a> width="124" height="32" /></a>
</div> </div>
</div> </div>
</body> </body>

View File

@ -7,7 +7,7 @@
<style type="text/css"> <style type="text/css">
/*<![CDATA[*/ /*<![CDATA[*/
body { body {
background-color: #fff; background-color: #FAF5F5;
color: #000; color: #000;
font-size: 0.9em; font-size: 0.9em;
font-family: sans-serif,helvetica; font-family: sans-serif,helvetica;
@ -15,19 +15,19 @@
padding: 0; padding: 0;
} }
:link { :link {
color: #c00; color: #0B2335;
} }
:visited { :visited {
color: #c00; color: #0B2335;
} }
a:hover { a:hover {
color: #f50; color: #0069DA;
} }
h1 { h1 {
text-align: center; text-align: center;
margin: 0; margin: 0;
padding: 0.6em 2em 0.4em; padding: 0.6em 2em 0.4em;
background-color: #900; background-color: #0B2335;
color: #fff; color: #fff;
font-weight: normal; font-weight: normal;
font-size: 1.75em; font-size: 1.75em;
@ -39,7 +39,7 @@
} }
h2 { h2 {
text-align: center; text-align: center;
background-color: #900; background-color: #0B2335;
font-size: 1.1em; font-size: 1.1em;
font-weight: bold; font-weight: bold;
color: #fff; color: #fff;
@ -64,7 +64,7 @@
} }
img { img {
border: 2px solid #fff; border: 2px solid #FAF5F5;
padding: 2px; padding: 2px;
margin: 2px; margin: 2px;
} }
@ -92,7 +92,7 @@
<p>Something has triggered missing webpage on your <p>Something has triggered missing webpage on your
website. This is the default error page for website. This is the default error page for
<strong>nginx</strong> that is distributed with <strong>nginx</strong> that is distributed with
Red Hat Enterprise Linux. It is located AlmaLinux. It is located
<tt>/usr/share/nginx/html/50x.html</tt></p> <tt>/usr/share/nginx/html/50x.html</tt></p>
<p>You should customize this error page for your own <p>You should customize this error page for your own
@ -100,7 +100,7 @@
the <strong>nginx</strong> configuration file the <strong>nginx</strong> configuration file
<tt>/etc/nginx/nginx.conf</tt>.</p> <tt>/etc/nginx/nginx.conf</tt>.</p>
<p>For information on Red Hat Enterprise Linux, please visit the <a href="http://www.redhat.com/">Red Hat, Inc. website</a>. The documentation for Red Hat Enterprise Linux is <a href="http://www.redhat.com/docs/manuals/enterprise/">available on the Red Hat, Inc. website</a>.</p> <p>For information on AlmaLinux, please visit the <a href="http://www.almalinux.org/">AlmaLinux website</a>.</p>
</div> </div>
</div> </div>
@ -110,10 +110,10 @@
src="nginx-logo.png" src="nginx-logo.png"
alt="[ Powered by nginx ]" alt="[ Powered by nginx ]"
width="121" height="32" /></a> width="121" height="32" /></a>
<a href="http://www.redhat.com/"><img <a href="http://www.almalinux.org/"><img
src="poweredby.png" src="poweredby.png"
alt="[ Powered by Red Hat Enterprise Linux ]" alt="[ Powered by AlmaLinux ]"
width="88" height="31" /></a> width="124" height="32" /></a>
</div> </div>
</div> </div>
</body> </body>

View File

@ -1,117 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Test Page for the Nginx HTTP Server on Red Hat Enterprise Linux</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
/*<![CDATA[*/
body {
background-color: #fff;
color: #000;
font-size: 0.9em;
font-family: sans-serif,helvetica;
margin: 0;
padding: 0;
}
:link {
color: #c00;
}
:visited {
color: #c00;
}
a:hover {
color: #f50;
}
h1 {
text-align: center;
margin: 0;
padding: 0.6em 2em 0.4em;
background-color: #900;
color: #fff;
font-weight: normal;
font-size: 1.75em;
border-bottom: 2px solid #000;
}
h1 strong {
font-weight: bold;
font-size: 1.5em;
}
h2 {
text-align: center;
background-color: #900;
font-size: 1.1em;
font-weight: bold;
color: #fff;
margin: 0;
padding: 0.5em;
border-bottom: 2px solid #000;
}
hr {
display: none;
}
.content {
padding: 1em 5em;
}
.alert {
border: 2px solid #000;
}
img {
border: 2px solid #fff;
padding: 2px;
margin: 2px;
}
a:hover img {
border: 2px solid #294172;
}
.logos {
margin: 1em;
text-align: center;
}
/*]]>*/
</style>
</head>
<body>
<h1>Welcome to <strong>nginx</strong> on Red Hat Enterprise Linux!</h1>
<div class="content">
<p>This page is used to test the proper operation of the
<strong>nginx</strong> HTTP server after it has been
installed. If you can read this page, it means that the
web server installed at this site is working
properly.</p>
<div class="alert">
<h2>Website Administrator</h2>
<div class="content">
<p>This is the default <tt>index.html</tt> page that
is distributed with <strong>nginx</strong> on
Red Hat Enterprise Linux. It is located in
<tt>/usr/share/nginx/html</tt>.</p>
<p>You should now put your content in a location of
your choice and edit the <tt>root</tt> configuration
directive in the <strong>nginx</strong>
configuration file
<tt>/etc/nginx/nginx.conf</tt>.</p>
<p>For information on Red Hat Enterprise Linux, please visit the <a href="http://www.redhat.com/">Red Hat, Inc. website</a>. The documentation for Red Hat Enterprise Linux is <a href="http://www.redhat.com/docs/manuals/enterprise/">available on the Red Hat, Inc. website</a>.</p>
</div>
</div>
<div class="logos">
<a href="http://nginx.net/"><img
src="nginx-logo.png"
alt="[ Powered by nginx ]"
width="121" height="32" /></a>
<a href="http://www.redhat.com/"><img
src="poweredby.png"
alt="[ Powered by Red Hat Enterprise Linux ]"
width="88" height="31" /></a>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,20 @@
%_nginx_abiversion @@NGINX_ABIVERSION@@
%_nginx_srcdir @@NGINX_SRCDIR@@
%_nginx_buildsrcdir nginx-src
%_nginx_modsrcdir ..
%_nginx_modbuilddir ../%{_vpath_builddir}
%nginx_moddir @@NGINX_MODDIR@@
%nginx_modconfdir @@NGINX_MODCONFDIR@@
%nginx_modrequires Requires: nginx(abi) = %{_nginx_abiversion}
%nginx_modconfigure(:-:) \\\
%undefine _strict_symbol_defs_build \
cp -a "%{_nginx_srcdir}" "%{_nginx_buildsrcdir}" \
cd "%{_nginx_buildsrcdir}" \
nginx_ldopts="$RPM_LD_FLAGS -Wl,-E" \
./configure --with-compat --with-cc-opt="%{optflags} $(pcre-config --cflags)" --with-ld-opt="$nginx_ldopts" \\\
--add-dynamic-module=$(realpath %{_nginx_modsrcdir}) --builddir=$(realpath %{_nginx_modbuilddir}) %{**} \
cd -
%nginx_modbuild %{__make} -C "%{_nginx_buildsrcdir}" %{_make_output_sync} %{?_smp_mflags} modules

View File

@ -0,0 +1,76 @@
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 0a2f260..606b6e2 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -616,6 +616,71 @@ ngx_ssl_load_certificate(ngx_pool_t *pool, char **err, ngx_str_t *cert,
X509 *x509, *temp;
u_long n;
+ if (ngx_strncmp(cert->data, "engine:", sizeof("engine:") - 1) == 0) {
+
+#ifndef OPENSSL_NO_ENGINE
+
+ u_char *p, *last;
+ ENGINE *engine;
+
+ p = cert->data + sizeof("engine:") - 1;
+ last = (u_char *) ngx_strchr(p, ':');
+
+ if (last == NULL) {
+ *err = "invalid syntax";
+ return NULL;
+ }
+
+ *last = '\0';
+
+ engine = ENGINE_by_id((char *) p);
+
+ if (engine == NULL) {
+ *err = "ENGINE_by_id() failed";
+ return NULL;
+ }
+
+ if (!ENGINE_init(engine)) {
+ *err = "ENGINE_init() failed";
+ ENGINE_free(engine);
+ return NULL;
+ }
+
+ *last++ = ':';
+
+ struct {
+ const char *cert_id;
+ X509 *cert;
+ } params = { (char *) last, NULL };
+
+ if (!ENGINE_ctrl_cmd(engine, "LOAD_CERT_CTRL", 0, &params, NULL, 1)) {
+ *err = "ENGINE_ctrl_cmd() failed - Unable to get the certificate";
+ ENGINE_free(engine);
+ return NULL;
+ }
+
+ ENGINE_finish(engine);
+ ENGINE_free(engine);
+
+ /* set chain to null */
+
+ *chain = sk_X509_new_null();
+ if (*chain == NULL) {
+ *err = "sk_X509_new_null() failed";
+ X509_free(params.cert);
+ return NULL;
+ }
+
+ return params.cert;
+
+#else
+
+ *err = "loading \"engine:...\" certificate is not supported";
+ return NULL;
+
+#endif
+ }
+
if (ngx_strncmp(cert->data, "data:", sizeof("data:") - 1) == 0) {
bio = BIO_new_mem_buf(cert->data + sizeof("data:") - 1,

View File

@ -1,8 +1,8 @@
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 345914f..d23967f 100644 index 2b0c5e6..9278087 100644
--- a/src/event/ngx_event_openssl.c --- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c +++ b/src/event/ngx_event_openssl.c
@@ -252,6 +252,8 @@ ngx_ssl_init(ngx_log_t *log) @@ -258,6 +258,8 @@ ngx_ssl_init(ngx_log_t *log)
ngx_int_t ngx_int_t
ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data) ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data)
{ {
@ -11,7 +11,7 @@ index 345914f..d23967f 100644
ssl->ctx = SSL_CTX_new(SSLv23_method()); ssl->ctx = SSL_CTX_new(SSLv23_method());
if (ssl->ctx == NULL) { if (ssl->ctx == NULL) {
@@ -316,49 +318,54 @@ ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data) @@ -322,49 +324,54 @@ ngx_ssl_create(ngx_ssl_t *ssl, ngx_uint_t protocols, void *data)
SSL_CTX_set_options(ssl->ctx, SSL_OP_SINGLE_DH_USE); SSL_CTX_set_options(ssl->ctx, SSL_OP_SINGLE_DH_USE);
@ -102,10 +102,10 @@ index 345914f..d23967f 100644
#ifdef SSL_OP_NO_COMPRESSION #ifdef SSL_OP_NO_COMPRESSION
SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_COMPRESSION); SSL_CTX_set_options(ssl->ctx, SSL_OP_NO_COMPRESSION);
diff --git a/src/event/ngx_event_openssl.h b/src/event/ngx_event_openssl.h diff --git a/src/event/ngx_event_openssl.h b/src/event/ngx_event_openssl.h
index 61da0c5..fa7ac41 100644 index 329760d..5cee113 100644
--- a/src/event/ngx_event_openssl.h --- a/src/event/ngx_event_openssl.h
+++ b/src/event/ngx_event_openssl.h +++ b/src/event/ngx_event_openssl.h
@@ -145,6 +145,7 @@ typedef struct { @@ -152,6 +152,7 @@ typedef struct {
#endif #endif
@ -114,11 +114,11 @@ index 61da0c5..fa7ac41 100644
#define NGX_SSL_SSLv3 0x0004 #define NGX_SSL_SSLv3 0x0004
#define NGX_SSL_TLSv1 0x0008 #define NGX_SSL_TLSv1 0x0008
diff --git a/src/http/modules/ngx_http_ssl_module.c b/src/http/modules/ngx_http_ssl_module.c diff --git a/src/http/modules/ngx_http_ssl_module.c b/src/http/modules/ngx_http_ssl_module.c
index b3f8f47..8340a12 100644 index a47d696..94f30db 100644
--- a/src/http/modules/ngx_http_ssl_module.c --- a/src/http/modules/ngx_http_ssl_module.c
+++ b/src/http/modules/ngx_http_ssl_module.c +++ b/src/http/modules/ngx_http_ssl_module.c
@@ -613,8 +613,7 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child) @@ -671,8 +671,7 @@ ngx_http_ssl_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
ngx_conf_merge_value(conf->early_data, prev->early_data, 0); ngx_conf_merge_value(conf->reject_handshake, prev->reject_handshake, 0);
ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols, ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols,
- (NGX_CONF_BITMASK_SET|NGX_SSL_TLSv1 - (NGX_CONF_BITMASK_SET|NGX_SSL_TLSv1
@ -128,10 +128,10 @@ index b3f8f47..8340a12 100644
ngx_conf_merge_size_value(conf->buffer_size, prev->buffer_size, ngx_conf_merge_size_value(conf->buffer_size, prev->buffer_size,
NGX_SSL_BUFSIZE); NGX_SSL_BUFSIZE);
diff --git a/src/mail/ngx_mail_ssl_module.c b/src/mail/ngx_mail_ssl_module.c diff --git a/src/mail/ngx_mail_ssl_module.c b/src/mail/ngx_mail_ssl_module.c
index 5544f75..3316a4b 100644 index 7eae83e..8328560 100644
--- a/src/mail/ngx_mail_ssl_module.c --- a/src/mail/ngx_mail_ssl_module.c
+++ b/src/mail/ngx_mail_ssl_module.c +++ b/src/mail/ngx_mail_ssl_module.c
@@ -291,8 +291,7 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) @@ -306,8 +306,7 @@ ngx_mail_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
prev->prefer_server_ciphers, 0); prev->prefer_server_ciphers, 0);
ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols, ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols,
@ -142,10 +142,10 @@ index 5544f75..3316a4b 100644
ngx_conf_merge_uint_value(conf->verify, prev->verify, 0); ngx_conf_merge_uint_value(conf->verify, prev->verify, 0);
ngx_conf_merge_uint_value(conf->verify_depth, prev->verify_depth, 1); ngx_conf_merge_uint_value(conf->verify_depth, prev->verify_depth, 1);
diff --git a/src/stream/ngx_stream_ssl_module.c b/src/stream/ngx_stream_ssl_module.c diff --git a/src/stream/ngx_stream_ssl_module.c b/src/stream/ngx_stream_ssl_module.c
index ec9524e..37af046 100644 index d8c0471..cef590d 100644
--- a/src/stream/ngx_stream_ssl_module.c --- a/src/stream/ngx_stream_ssl_module.c
+++ b/src/stream/ngx_stream_ssl_module.c +++ b/src/stream/ngx_stream_ssl_module.c
@@ -625,8 +625,7 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child) @@ -641,8 +641,7 @@ ngx_stream_ssl_merge_conf(ngx_conf_t *cf, void *parent, void *child)
prev->prefer_server_ciphers, 0); prev->prefer_server_ciphers, 0);
ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols, ngx_conf_merge_bitmask_value(conf->protocols, prev->protocols,

View File

@ -25,7 +25,7 @@ http {
tcp_nopush on; tcp_nopush on;
tcp_nodelay on; tcp_nodelay on;
keepalive_timeout 65; keepalive_timeout 65;
types_hash_max_size 2048; types_hash_max_size 4096;
include /etc/nginx/mime.types; include /etc/nginx/mime.types;
default_type application/octet-stream; default_type application/octet-stream;
@ -36,17 +36,14 @@ http {
include /etc/nginx/conf.d/*.conf; include /etc/nginx/conf.d/*.conf;
server { server {
listen 80 default_server; listen 80;
listen [::]:80 default_server; listen [::]:80;
server_name _; server_name _;
root /usr/share/nginx/html; root /usr/share/nginx/html;
# Load configuration files for the default server block. # Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf; include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html; error_page 404 /404.html;
location = /40x.html { location = /40x.html {
} }
@ -59,8 +56,8 @@ http {
# Settings for a TLS enabled server. # Settings for a TLS enabled server.
# #
# server { # server {
# listen 443 ssl http2 default_server; # listen 443 ssl http2;
# listen [::]:443 ssl http2 default_server; # listen [::]:443 ssl http2;
# server_name _; # server_name _;
# root /usr/share/nginx/html; # root /usr/share/nginx/html;
# #
@ -74,9 +71,6 @@ http {
# # Load configuration files for the default server block. # # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf; # include /etc/nginx/default.d/*.conf;
# #
# location / {
# }
#
# error_page 404 /404.html; # error_page 404 /404.html;
# location = /40x.html { # location = /40x.html {
# } # }

View File

@ -5,6 +5,7 @@
missingok missingok
notifempty notifempty
compress compress
delaycompress
sharedscripts sharedscripts
postrotate postrotate
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true /bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true

2
SOURCES/nginxmods.attr Normal file
View File

@ -0,0 +1,2 @@
%__nginxmods_requires %{_rpmconfigdir}/nginxmods.req
%__nginxmods_path ^%{_prefix}/lib(64)?/nginx/modules/.*\\.so$

6
SOURCES/nginxmods.req Normal file
View File

@ -0,0 +1,6 @@
#!/bin/sh
# Generate Requires: nginx(abi) = VERSION
echo "nginx(abi) = $(rpm --eval '%{_nginx_abiversion}')"
exit 0

View File

@ -16,10 +16,21 @@
%global with_mailcap_mimetypes 1 %global with_mailcap_mimetypes 1
%endif %endif
# Cf. https://www.nginx.com/blog/creating-installable-packages-dynamic-modules/
%global nginx_abiversion %{version}
%global nginx_moduledir %{_libdir}/nginx/modules
%global nginx_moduleconfdir %{_datadir}/nginx/modules
%global nginx_srcdir %{_usrsrc}/%{name}-%{version}-%{release}
# Do not generate provides/requires from nginx sources
%global __provides_exclude_from ^%{nginx_srcdir}/.*$
%global __requires_exclude_from ^%{nginx_srcdir}/.*$
Name: nginx Name: nginx
Epoch: 1 Epoch: 1
Version: 1.16.1 Version: 1.20.1
Release: 1%{?dist} Release: 1%{?dist}.alma
Summary: A high performance web server and reverse proxy server Summary: A high performance web server and reverse proxy server
Group: System Environment/Daemons Group: System Environment/Daemons
@ -29,13 +40,15 @@ License: BSD
URL: http://nginx.org/ URL: http://nginx.org/
Source0: https://nginx.org/download/nginx-%{version}.tar.gz Source0: https://nginx.org/download/nginx-%{version}.tar.gz
Source1: ngx_http_geoip2_module-3.4.tar
Source10: nginx.service Source10: nginx.service
Source11: nginx.logrotate Source11: nginx.logrotate
Source12: nginx.conf Source12: nginx.conf
Source13: nginx-upgrade Source13: nginx-upgrade
Source14: nginx-upgrade.8 Source14: nginx-upgrade.8
Source100: index.html Source15: macros.nginxmods.in
Source101: poweredby.png Source16: nginxmods.attr
Source17: nginxmods.req
Source102: nginx-logo.png Source102: nginx-logo.png
Source103: 404.html Source103: 404.html
Source104: 50x.html Source104: 50x.html
@ -57,7 +70,10 @@ Patch2: nginx-1.16.0-pkcs11.patch
Patch3: nginx-1.14.1-perl-module-hardening.patch Patch3: nginx-1.14.1-perl-module-hardening.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1643647 # https://bugzilla.redhat.com/show_bug.cgi?id=1643647
Patch4: nginx-1.16.0-enable-tls1v3-by-default.patch Patch4: nginx-1.20.0-enable-tls1v3-by-default.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1668717
Patch5: nginx-1.18.0-pkcs11-cert.patch
%if 0%{?with_gperftools} %if 0%{?with_gperftools}
BuildRequires: gperftools-devel BuildRequires: gperftools-devel
@ -67,6 +83,7 @@ BuildRequires: pcre-devel
BuildRequires: zlib-devel BuildRequires: zlib-devel
Requires: nginx-filesystem = %{epoch}:%{version}-%{release} Requires: nginx-filesystem = %{epoch}:%{version}-%{release}
Requires: system-logos-httpd >= 82.0
%if 0%{?rhel} > 0 && 0%{?rhel} < 8 %if 0%{?rhel} > 0 && 0%{?rhel} < 8
# Introduced at 1:1.10.0-1 to ease upgrade path. To be removed later. # Introduced at 1:1.10.0-1 to ease upgrade path. To be removed later.
@ -85,6 +102,8 @@ BuildRequires: systemd
Requires(post): systemd Requires(post): systemd
Requires(preun): systemd Requires(preun): systemd
Requires(postun): systemd Requires(postun): systemd
# For external nginx modules
Provides: nginx(abi) = %{nginx_abiversion}
%description %description
Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
@ -120,14 +139,16 @@ for the Nginx server including the correct permissions for the
directories. directories.
%if %{with geoip} %if %{with geoip}
%package mod-http-geoip %package mod-http-geoip2
Group: System Environment/Daemons Group: System Environment/Daemons
Summary: Nginx HTTP geoip module Summary: Nginx HTTP geoip module
BuildRequires: GeoIP-devel BuildRequires: GeoIP-devel
Requires: nginx BuildRequires: libmaxminddb-devel
Requires: nginx(abi) = %{nginx_abiversion}
Requires: GeoIP Requires: GeoIP
Requires: libmaxminddb
%description mod-http-geoip %description mod-http-geoip2
%{summary}. %{summary}.
%endif %endif
@ -135,7 +156,7 @@ Requires: GeoIP
Group: System Environment/Daemons Group: System Environment/Daemons
Summary: Nginx HTTP image filter module Summary: Nginx HTTP image filter module
BuildRequires: gd-devel BuildRequires: gd-devel
Requires: nginx Requires: nginx(abi) = %{nginx_abiversion}
Requires: gd Requires: gd
%description mod-http-image-filter %description mod-http-image-filter
@ -149,7 +170,7 @@ BuildRequires: perl-devel
BuildRequires: perl-generators BuildRequires: perl-generators
%endif %endif
BuildRequires: perl(ExtUtils::Embed) BuildRequires: perl(ExtUtils::Embed)
Requires: nginx Requires: nginx(abi) = %{nginx_abiversion}
Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
Requires: perl(constant) Requires: perl(constant)
@ -160,7 +181,7 @@ Requires: perl(constant)
Group: System Environment/Daemons Group: System Environment/Daemons
Summary: Nginx XSLT module Summary: Nginx XSLT module
BuildRequires: libxslt-devel BuildRequires: libxslt-devel
Requires: nginx Requires: nginx(abi) = %{nginx_abiversion}
%description mod-http-xslt-filter %description mod-http-xslt-filter
%{summary}. %{summary}.
@ -168,7 +189,7 @@ Requires: nginx
%package mod-mail %package mod-mail
Group: System Environment/Daemons Group: System Environment/Daemons
Summary: Nginx mail modules Summary: Nginx mail modules
Requires: nginx Requires: nginx(abi) = %{nginx_abiversion}
%description mod-mail %description mod-mail
%{summary}. %{summary}.
@ -176,19 +197,43 @@ Requires: nginx
%package mod-stream %package mod-stream
Group: System Environment/Daemons Group: System Environment/Daemons
Summary: Nginx stream modules Summary: Nginx stream modules
Requires: nginx Requires: nginx(abi) = %{nginx_abiversion}
%description mod-stream %description mod-stream
%{summary}. %{summary}.
%package mod-devel
Summary: Nginx module development files
Requires: nginx = %{epoch}:%{version}-%{release}
Requires: make
Requires: gcc
Requires: gd-devel
%if 0%{?with_gperftools}
Requires: gperftools-devel
%endif
%if %{with geoip}
Requires: GeoIP-devel
Requires: libmaxminddb-devel
%endif
Requires: libxslt-devel
Requires: openssl-devel
Requires: pcre-devel
Requires: perl-devel
Requires: perl(ExtUtils::Embed)
Requires: zlib-devel
%description mod-devel
%{summary}.
%prep %prep
%setup -q %setup -T -D -b 0 -b 1
%patch0 -p0 %patch0 -p0
%patch1 -p1 %patch1 -p1
%patch2 -p1 %patch2 -p1
%patch3 -p1 %patch3 -p1
%patch4 -p1 %patch4 -p1
%patch5 -p1
cp %{SOURCE200} %{SOURCE210} %{SOURCE10} %{SOURCE12} . cp %{SOURCE200} %{SOURCE210} %{SOURCE10} %{SOURCE12} .
@ -197,6 +242,10 @@ sed -i -e 's#KillMode=.*#KillMode=process#g' nginx.service
sed -i -e 's#PROFILE=SYSTEM#HIGH:!aNULL:!MD5#' nginx.conf sed -i -e 's#PROFILE=SYSTEM#HIGH:!aNULL:!MD5#' nginx.conf
%endif %endif
# Prepare sources for installation
cp -a ../%{name}-%{version} ../%{name}-%{version}-%{release}-src
mv ../%{name}-%{version}-%{release}-src .
%build %build
# nginx does not utilize a standard configure script. It has its own # nginx does not utilize a standard configure script. It has its own
@ -207,7 +256,7 @@ export DESTDIR=%{buildroot}
./configure \ ./configure \
--prefix=%{_datadir}/nginx \ --prefix=%{_datadir}/nginx \
--sbin-path=%{_sbindir}/nginx \ --sbin-path=%{_sbindir}/nginx \
--modules-path=%{_libdir}/nginx/modules \ --modules-path=%{nginx_moduledir} \
--conf-path=%{_sysconfdir}/nginx/nginx.conf \ --conf-path=%{_sysconfdir}/nginx/nginx.conf \
--error-log-path=%{_localstatedir}/log/nginx/error.log \ --error-log-path=%{_localstatedir}/log/nginx/error.log \
--http-log-path=%{_localstatedir}/log/nginx/access.log \ --http-log-path=%{_localstatedir}/log/nginx/access.log \
@ -232,7 +281,7 @@ export DESTDIR=%{buildroot}
--with-http_xslt_module=dynamic \ --with-http_xslt_module=dynamic \
--with-http_image_filter_module=dynamic \ --with-http_image_filter_module=dynamic \
%if %{with geoip} %if %{with geoip}
--with-http_geoip_module=dynamic \ --add-dynamic-module=%{_builddir}/ngx_http_geoip2_module-3.4 \
%endif %endif
--with-http_sub_module \ --with-http_sub_module \
--with-http_dav_module \ --with-http_dav_module \
@ -258,6 +307,7 @@ export DESTDIR=%{buildroot}
%endif %endif
--with-debug \ --with-debug \
--with-cc-opt="%{optflags} $(pcre-config --cflags)" \ --with-cc-opt="%{optflags} $(pcre-config --cflags)" \
--with-compat \
--with-ld-opt="$RPM_LD_FLAGS -Wl,-E" # so the perl module finds its symbols --with-ld-opt="$RPM_LD_FLAGS -Wl,-E" # so the perl module finds its symbols
make %{?_smp_mflags} make %{?_smp_mflags}
@ -287,15 +337,24 @@ install -p -d -m 0700 %{buildroot}%{_localstatedir}/lib/nginx/tmp
install -p -d -m 0700 %{buildroot}%{_localstatedir}/log/nginx install -p -d -m 0700 %{buildroot}%{_localstatedir}/log/nginx
install -p -d -m 0755 %{buildroot}%{_datadir}/nginx/html install -p -d -m 0755 %{buildroot}%{_datadir}/nginx/html
install -p -d -m 0755 %{buildroot}%{_datadir}/nginx/modules install -p -d -m 0755 %{buildroot}%{nginx_moduleconfdir}
install -p -d -m 0755 %{buildroot}%{_libdir}/nginx/modules install -p -d -m 0755 %{buildroot}%{nginx_moduledir}
install -p -m 0644 ./nginx.conf \ install -p -m 0644 ./nginx.conf \
%{buildroot}%{_sysconfdir}/nginx %{buildroot}%{_sysconfdir}/nginx
install -p -m 0644 %{SOURCE100} \
%{buildroot}%{_datadir}/nginx/html rm -f %{buildroot}%{_datadir}/nginx/html/index.html
install -p -m 0644 %{SOURCE101} %{SOURCE102} \ ln -s ../../testpage/index.html \
%{buildroot}%{_datadir}/nginx/html/index.html
install -p -m 0644 %{SOURCE102} \
%{buildroot}%{_datadir}/nginx/html %{buildroot}%{_datadir}/nginx/html
ln -s nginx-logo.png %{buildroot}%{_datadir}/nginx/html/poweredby.png
mkdir -p %{buildroot}%{_datadir}/nginx/html/icons
# Symlink for the powered-by-$DISTRO image:
ln -s ../../../pixmaps/poweredby.png \
%{buildroot}%{_datadir}/nginx/html/icons/poweredby.png
install -p -m 0644 %{SOURCE103} %{SOURCE104} \ install -p -m 0644 %{SOURCE103} %{SOURCE104} \
%{buildroot}%{_datadir}/nginx/html %{buildroot}%{_datadir}/nginx/html
@ -315,19 +374,35 @@ for i in ftdetect indent syntax; do
done done
%if %{with geoip} %if %{with geoip}
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_geoip_module.so";' \ echo 'load_module "%{nginx_moduledir}/ngx_http_geoip2_module.so";' \
> %{buildroot}%{_datadir}/nginx/modules/mod-http-geoip.conf > %{buildroot}%{nginx_moduleconfdir}/mod-http-geoip2.conf
%endif %endif
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_image_filter_module.so";' \ echo 'load_module "%{nginx_moduledir}/ngx_http_image_filter_module.so";' \
> %{buildroot}%{_datadir}/nginx/modules/mod-http-image-filter.conf > %{buildroot}%{nginx_moduleconfdir}/mod-http-image-filter.conf
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_perl_module.so";' \ echo 'load_module "%{nginx_moduledir}/ngx_http_perl_module.so";' \
> %{buildroot}%{_datadir}/nginx/modules/mod-http-perl.conf > %{buildroot}%{nginx_moduleconfdir}/mod-http-perl.conf
echo 'load_module "%{_libdir}/nginx/modules/ngx_http_xslt_filter_module.so";' \ echo 'load_module "%{nginx_moduledir}/ngx_http_xslt_filter_module.so";' \
> %{buildroot}%{_datadir}/nginx/modules/mod-http-xslt-filter.conf > %{buildroot}%{nginx_moduleconfdir}/mod-http-xslt-filter.conf
echo 'load_module "%{_libdir}/nginx/modules/ngx_mail_module.so";' \ echo 'load_module "%{nginx_moduledir}/ngx_mail_module.so";' \
> %{buildroot}%{_datadir}/nginx/modules/mod-mail.conf > %{buildroot}%{nginx_moduleconfdir}/mod-mail.conf
echo 'load_module "%{_libdir}/nginx/modules/ngx_stream_module.so";' \ echo 'load_module "%{nginx_moduledir}/ngx_stream_module.so";' \
> %{buildroot}%{_datadir}/nginx/modules/mod-stream.conf > %{buildroot}%{nginx_moduleconfdir}/mod-stream.conf
# Install files for supporting nginx module builds
## Install source files
mkdir -p %{buildroot}%{_usrsrc}
mv %{name}-%{version}-%{release}-src %{buildroot}%{nginx_srcdir}
## Install rpm macros
mkdir -p %{buildroot}%{_rpmmacrodir}
sed -e "s|@@NGINX_ABIVERSION@@|%{nginx_abiversion}|g" \
-e "s|@@NGINX_MODDIR@@|%{nginx_moduledir}|g" \
-e "s|@@NGINX_MODCONFDIR@@|%{nginx_moduleconfdir}|g" \
-e "s|@@NGINX_SRCDIR@@|%{nginx_srcdir}|g" \
%{SOURCE15} > %{buildroot}%{_rpmmacrodir}/macros.nginxmods
## Install dependency generator
install -Dpm0644 -t %{buildroot}%{_fileattrsdir} %{SOURCE16}
install -Dpm0755 -t %{buildroot}%{_rpmconfigdir} %{SOURCE17}
%pre filesystem %pre filesystem
getent group %{nginx_user} > /dev/null || groupadd -r %{nginx_user} getent group %{nginx_user} > /dev/null || groupadd -r %{nginx_user}
@ -340,7 +415,7 @@ exit 0
%systemd_post nginx.service %systemd_post nginx.service
%if %{with geoip} %if %{with geoip}
%post mod-http-geoip %post mod-http-geoip2
if [ $1 -eq 1 ]; then if [ $1 -eq 1 ]; then
/usr/bin/systemctl reload nginx.service >/dev/null 2>&1 || : /usr/bin/systemctl reload nginx.service >/dev/null 2>&1 || :
fi fi
@ -417,7 +492,8 @@ fi
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx %attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx/tmp %attr(770,%{nginx_user},root) %dir %{_localstatedir}/lib/nginx/tmp
%attr(770,%{nginx_user},root) %dir %{_localstatedir}/log/nginx %attr(770,%{nginx_user},root) %dir %{_localstatedir}/log/nginx
%dir %{_libdir}/nginx/modules %dir %{nginx_moduledir}
%dir %{nginx_moduleconfdir}
%files all-modules %files all-modules
@ -431,36 +507,75 @@ fi
%dir %{_unitdir}/nginx.service.d %dir %{_unitdir}/nginx.service.d
%if %{with geoip} %if %{with geoip}
%files mod-http-geoip %files mod-http-geoip2
%{_datadir}/nginx/modules/mod-http-geoip.conf %{nginx_moduleconfdir}/mod-http-geoip2.conf
%{_libdir}/nginx/modules/ngx_http_geoip_module.so %{nginx_moduledir}/ngx_http_geoip2_module.so
%{nginx_moduledir}/ngx_stream_geoip2_module.so
%endif %endif
%files mod-http-image-filter %files mod-http-image-filter
%{_datadir}/nginx/modules/mod-http-image-filter.conf %{nginx_moduleconfdir}/mod-http-image-filter.conf
%{_libdir}/nginx/modules/ngx_http_image_filter_module.so %{nginx_moduledir}/ngx_http_image_filter_module.so
%files mod-http-perl %files mod-http-perl
%{_datadir}/nginx/modules/mod-http-perl.conf %{nginx_moduleconfdir}/mod-http-perl.conf
%{_libdir}/nginx/modules/ngx_http_perl_module.so %{nginx_moduledir}/ngx_http_perl_module.so
%dir %{perl_vendorarch}/auto/nginx %dir %{perl_vendorarch}/auto/nginx
%{perl_vendorarch}/nginx.pm %{perl_vendorarch}/nginx.pm
%{perl_vendorarch}/auto/nginx/nginx.so %{perl_vendorarch}/auto/nginx/nginx.so
%files mod-http-xslt-filter %files mod-http-xslt-filter
%{_datadir}/nginx/modules/mod-http-xslt-filter.conf %{nginx_moduleconfdir}/mod-http-xslt-filter.conf
%{_libdir}/nginx/modules/ngx_http_xslt_filter_module.so %{nginx_moduledir}/ngx_http_xslt_filter_module.so
%files mod-mail %files mod-mail
%{_datadir}/nginx/modules/mod-mail.conf %{nginx_moduleconfdir}/mod-mail.conf
%{_libdir}/nginx/modules/ngx_mail_module.so %{nginx_moduledir}/ngx_mail_module.so
%files mod-stream %files mod-stream
%{_datadir}/nginx/modules/mod-stream.conf %{nginx_moduleconfdir}/mod-stream.conf
%{_libdir}/nginx/modules/ngx_stream_module.so %{nginx_moduledir}/ngx_stream_module.so
%files mod-devel
%{_rpmmacrodir}/macros.nginxmods
%{_fileattrsdir}/nginxmods.attr
%{_rpmconfigdir}/nginxmods.req
%{nginx_srcdir}/
%changelog %changelog
* Mon Jan 31 2022 Andrew Lukoshko <alukoshko@almalinux.org> - 1:1.20.1-1.alma
- Debrand for AlmaLinux
* Tue Dec 21 2021 Joe Orton <jorton@redhat.com> - 1:1.20.1-1
- rebase to 1.20.1 (addressing CVE-2021-23017)
* Wed Dec 1 2021 Joe Orton <jorton@redhat.com> - 1:1.20.0-4
- add delaycompress to logrotate config (#2015243)
* Fri Sep 10 2021 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.0-3
- Add -mod-devel subpackage for building external nginx modules (Neal Gompa)
Resolves: #1991787
* Fri Aug 20 2021 Luboš Uhliarik <luhliari@redhat.com> - 1:1.20.0-2
- Resolves: #1991796 - build nginx with --with-compat
* Wed May 05 2021 Lubos Uhliarik <luhliari@redhat.com> - 1:1.20.0-1
- new version 1.20.0
- Resolves: #1945671 - RFE: add nginx:1.20 module stream
* Thu Nov 12 2020 Lubos Uhliarik <luhliari@redhat.com> - 1:1.18.0-3
- Resolves: #1651377 - centralizing default index.html on nginx
- Resolves: #1825683 - Outdated Red Hat branding used in nginx default pages
* Wed Apr 22 2020 Lubos Uhliarik <luhliari@redhat.com> - 1:1.18.0-2
- new version 1.18.0
- Resolves: #1668717 - [RFE] Support loading certificates from hardware token
(PKCS#11)
- Increased types_hash_max_size to 4096 in default config
- Drop location / from default config (rhbz#1564768)
- Drop default_sever from default config (rhbz#1373822)
* Thu Aug 29 2019 Lubos Uhliarik <luhliari@redhat.com> - 1:1.16.1-1 * Thu Aug 29 2019 Lubos Uhliarik <luhliari@redhat.com> - 1:1.16.1-1
- update to 1.16.1 - update to 1.16.1
- Resolves: #1745697 - CVE-2019-9511 nginx:1.16/nginx: HTTP/2: large amount - Resolves: #1745697 - CVE-2019-9511 nginx:1.16/nginx: HTTP/2: large amount