For Ubuntu users, the default repository for Nginx might not install the latest version. However, for most users, this is satisfactory. Meanwhile, many users who seek performance and to keep up with the latest security, bug, and performance would look at installing the Nginx mainline. Nginx even recommends installing the mainline over the stable version. The main difference between stable and mainline is that stable has been tested while mainline has newer features and less testing. Depending on your needs, one or the other might be a better choice for you. If you need the latest and greatest, go with the mainline. If you need a more stable release that’s been thoroughly tested, go with the stable version.
As discussed in the introduction, the following tutorial will cover installing the mainline version of Nginx on Ubuntu 22.10, 22.04, and 20.04 with importing the official repository from Nginx, which is the most recommended option that provides the latest mainline or for users preferring to stay on stable the newest version of this branch as well.
Table of Contents
The following tutorial was done with a Ubuntu 22.10 release, and example images were taken. Still, it was tested on Ubuntu 20.04 and Ubuntu 22.04. In the future, if Ubuntu makes any changes to break the tutorial for one of the distribution versions, please place a comment for me to investigate so I can update the tutorial.
Recommended Steps Before Installation
Before proceeding with the tutorial, ensuring your system is up-to-date with all existing packages is good.
sudo apt update
Optionally, you can list the updates for users who require review or are curious.
sudo apt --list upgradable
Proceed to upgrade any outdated packages using the following command.
sudo apt upgrade
Remove Previous Nginx Installation on Ubuntu Linux
First, to avoid conflict, you need to remove any previous Nginx installations before installing the new versions.
First, back up your Nginx configuration for safekeeping.
sudo mv /etc/nginx/ /etc/nginx.old/
Stop Nginx using the systemctl command as follows:
sudo systemctl stop nginx
Next, remove Nginx using the following command:
sudo apt autoremove nginx*
Install Nginx Mainline or Stable on Ubuntu Linux
The tutorial is for installing Nginx mainline, but since it is straightforward to import either mainline or stable, the tutorial will show both options, which will give you the latest up-to-date version of Nginx without waiting for the maintainers of Ubuntu or any other PPA you may be used to compile and push it to their repositories.
First, open your terminal (CTRL+ALT+T) for desktop users; server users would already be in the terminal and run the following installation command for the following packages.
sudo apt install curl gnupg2 ca-certificates lsb-release dirmngr software-properties-common apt-transport-https -y
Download and add the Nginx GPG key to verify the authenticity of the packages.
curl -fSsL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Verify the GPG key by using the following command.
gpg --dry-run --quiet --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
Example output if successful:
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14] 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 uid nginx signing key <firstname.lastname@example.org>
Next, use the following to add either the stable or mainline Nginx repository to your apt package manager list.
Import Nginx Mainline Repository:
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/mainline/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
Import Nginx Stable Repository:
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
Ideally, you should set APT pinning to prefer Nginx packages over any default Ubuntu repositories or PPAs. This can be done by using the following command.
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
x\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx Package: * Pin: origin nginx.org Pin: release o=nginx Pin-Priority: 900
Once done, update the apt repositories to reflect the new additions.
sudo apt update
Now proceed to install Nginx.
sudo apt install nginx
Optionally, you can verify the installation on your server or desktop Nginx using the apt-cache policy command. Listing the version build and ensuring Nginx is installed directly from Nginx repositories is better.
apt-cache policy nginx
The above example image shows that the latest Nginx mainline is installed directly from Nginx and has a priority set of 900, higher than any other repository you configured earlier. At this point, you have installed the latest version of Nginx from its official repository.