NGINX

Differences between revisions 1 and 6 (spanning 5 versions)
Revision 1 as of 2017-02-13 23:54:04
Size: 6795
Editor: teward
Comment: Create page.
Revision 6 as of 2017-02-28 21:20:47
Size: 7538
Editor: teward
Comment: Link to Xenial Xerus notes page (from the original release notes)
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
<<Anchor(WhatIs)>>
Line 6: Line 7:
<<Anchor(Maintainers)>>
Line 11: Line 13:
<<Anchor(FeatureRequest)>>
Line 15: Line 18:
<<Anchor(EnableUpstreamFeature)>>
Line 24: Line 28:
  * /!\ NOTE: The primary reason for this, in Ubuntu, is third-party module interaction for Universe-pocket flavors of NGINX; this may be reversed in the future, but currently is not going to be enabled at this time/
Line 26: Line 31:
<<Anchor(RequestThirdPartyModule)>>
Line 35: Line 41:
<<Anchor(BugTriage)>>
Line 40: Line 47:
=== Bug in an NGINX Version with ~CODENAME or +CODENAME in Version === <<Anchor(TriageNotUbuntuVersion)>>
=== Bug in an NGINX Version with ~CODENAME or +CODENAME in Version String ===
Line 42: Line 50:
(NOTE: CODENAME would be "Xenial" for 16.04, for example) (NOTE: `CODENAME` would be `xenial` for 16.04, for example)
Line 47: Line 55:
 * If version string contains '+CODENAME#' (where # is a number):  * If version string contains `+CODENAME#` (where # is a number):
Line 49: Line 57:
 * If version string contains '~CODENAME':  * If version string contains `~CODENAME`:
Line 53: Line 61:
<<Anchor(TriageThirdPartyRequest)>>
Line 65: Line 74:
=== Error: "Address in use" / "bind() ... failed" === <<Anchor(TriageAddressInUse)>>
=== "Address in use" / "bind() failed" errors ===
Line 69: Line 79:
 * nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
 * nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
 * `nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)`
 * `nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)`
Line 80: Line 90:
=== Error: "No Such File or Directory" for nginx.conf or config files === <<Anchor(TriageConfigNoSuchFile)>>
=== "No Such File or Directory" for `nginx.conf` / config files error ===
Line 84: Line 95:
 * nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)  * `nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)`
Line 94: Line 105:
    * sudo apt-get remove --purge nginx-common
    * sudo apt-get install nginx nginx-common
  * If a user wants a specific flavor of nginx, and not deal with the 'nginx' metapackage, they can replace 'nginx' with 'nginx-light', 'nginx-extras', 'nginx-full', or 'nginx-core'.
    * `sudo apt-get remove --purge nginx-common`
    * `sudo apt-get install nginx nginx-common`
  * If a user wants a specific flavor of `nginx`, and not deal with the `nginx` metapackage, they can replace `nginx` with `nginx-light`, `nginx-extras`, `nginx-full`, or `nginx-core`.
Line 98: Line 109:
<<Anchor(Versions)>>
Line 102: Line 114:
||<:> '''Ubuntu Release''' ||<:> '''NGINX Version''' ||<:> '''Upstream Branch''' ||
||<:> 12.04 ||<:> 1.1.19 ||<:> Development* ||
||<:> 14.04 ||<:> 1.4.6 ||<:> Stable ||
||<:> 16.04 ||<:> 1.10.0 ||<:> Stable ||
||<:> 16.10 ||<:> 1.10.1 ||<:> Stable ||
||<:> 17.04 (dev) ||<:> 1.10.3 ||<:> Stable ||
||<:> '''Ubuntu Release''' ||<:> '''NGINX Version''' ||<:> '''Upstream Branch''' ||<:> '''Release-specific Notes''' ||
||<:> 12.04 ||<:> 1.1.19 ||<:> Development* ||<:> ||
||<:> 14.04 ||<:> 1.4.6 ||<:> Stable ||<:> ||
||<:> 16.04 ||<:> 1.10.0 ||<:> Stable ||<:> [[ServerTeam/NGINX/XenialXerus|Notes]] ||
||<:> 16.10 ||<:> 1.10.1 ||<:> Stable ||<:> ||
||<:> 17.04 (dev) ||<:> 1.10.3 ||<:> Stable ||<:> [[ServerTeam/NGINX/ZestyZapus|Notes]] ||
Line 110: Line 122:

<<Anchor(AdditionalResources)>>

What is NGINX?

NGINX is open source software for web serving, reverse proxying, caching, load balancing, media streaming, and more. It started out as a web server designed for maximum performance and stability. In addition to its HTTP server capabilities, NGINX can also function as a proxy server for email (IMAP, POP3, and SMTP) and a reverse proxy and load balancer for HTTP, TCP, and UDP servers.

Who maintains NGINX in Ubuntu?

The NGINX software and packaging is maintained in Ubuntu jointly by Thomas Ward, and the rest of the Server Team, as well as the Security team for Ubuntu Trusty 14.04 LTS and onwards as part of the 'main' repository (for security updates).

Requesting Additional Features

The standard procedure for requesting additional features or changes to a package is to open a bug and make sure it's marked as a feature request, to mark as a Wishlist item. Any deviation from this is documented below.

Enablement of a Core (upstream provided) feature

The standard procedure for requesting additional features that are provided as a part of the pure source code from NGINX is to file a bug.

There are certain features that will not be enabled, however, even if requested, due to various reasons:

  • AIO Support
    • Initial request about NGINX+AIO on Ask Ubuntu

    • AIO support causes a lot of unintended side effects when debugging NGINX behavior. While this may not be intentional, it causes a lot of issues. AIO support was requested in Debian Bug #784240, but was rejected as "Won't Enable" for this reason.

    • Warning /!\ NOTE: The primary reason for this, in Ubuntu, is third-party module interaction for Universe-pocket flavors of NGINX; this may be reversed in the future, but currently is not going to be enabled at this time/

Requesting Inclusion of a Third-Party Module

NGINX has *numerous* third-party plugins not maintained by the NGINX upstream teams or the Ubuntu teams, and is able to be extended with such plugins (as has been done in Debian with some of the modules enabled/available for the nginx-full and nginx-extras flavors). Because of this ability to be extended we have received a good deal of requests here in Ubuntu to include third-party modules not yet included in the package.

When it comes to determining inclusion, there's many factors, including that we also have to be concerned if Debian does not support it, as we merge from Debian to Ubuntu when possible, and introducing new versions or software code can break these modules to varying degrees.

Given the complexity of NGINX, the varied level of version support by third party module developers, and the varied levels of triviality to support a given third-party module, we are not accepting additional third-party module requests for Ubuntu. Any requests for third-party modules to be added to the packaging should originate in Debian, and be filed against the 'src:nginx' package on Debian's Bug Tracker, where it will be considered whether or not to include that module.

Bug Triage Guidelines

For the most part, standard triage rules apply. There are several special-case issues which have different handling processes, however, detailed below.

Bug in an NGINX Version with ~CODENAME or +CODENAME in Version String

(NOTE: CODENAME would be xenial for 16.04, for example)

Triage Handling:

  • Status (Ubuntu): Invalid

  • If version string contains +CODENAME# (where # is a number):

  • If version string contains ~CODENAME:

"Please add" a third-party module to nginx - Feature Request

Triage Handling:

  • Status: Won't Fix

  • Importance: Wishlist

Or...

"Address in use" / "bind() failed" errors

Example Log Excerpts:

  • nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)

  • nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)

Triage Handling:

  • Status: Invalid

  • Reason:
    • This is known to be a local-system-related issue and not an issue in the packaging.
    • This usually happens if Apache or some other service is listening already on the IP/port combination set forth in the NGINX listen configurations.

"No Such File or Directory" for `nginx.conf` / config files error

Example Log Excerpts:

  • nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)

Triage Handling:

  • Status: Invalid

  • Reason:
    • This is known to be a local-system-related issue and not an issue in the packaging.
    • This can happen when some packages are installed or removed, and alter configurations. This can also happen due to user error or mistakes, which remove the configuration files. In each case, this is a local-system issue.
  • WORKAROUND / FIX:
    • It is possible to completely remove and reinstall the default configuration for NGINX. The workaround is to execute the following commands in sequence:
      • sudo apt-get remove --purge nginx-common

      • sudo apt-get install nginx nginx-common

    • If a user wants a specific flavor of nginx, and not deal with the nginx metapackage, they can replace nginx with nginx-light, nginx-extras, nginx-full, or nginx-core.

Versions in Ubuntu Repository

We currently support the following Versions in the Ubuntu repositories, for a given release. Note the "Tracking" column indicates whether we are tracking NGINX's Stable or Mainline branch for that release. (This does not include packaging version string changes, or Security updates unless a version bump has happened for the Security updates.)

Ubuntu Release

NGINX Version

Upstream Branch

Release-specific Notes

12.04

1.1.19

Development*

14.04

1.4.6

Stable

16.04

1.10.0

Stable

Notes

16.10

1.10.1

Stable

17.04 (dev)

1.10.3

Stable

Notes

* The "Development" branch is now called the Mainline branch, as the namings have changed at NGINX since 2012.

Additional Resources and References

ServerTeam/NGINX (last edited 2018-10-30 15:36:55 by teward)