Ubuntu安装Nginx教程

2,261 阅读1分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

Nginx(读作“Engine X”)是一个高性能的网络服务器。它最初是为了解决 10K 问题而开发的,这意味着服务 10.000 个并发连接。Nginx 可以用作独立的 Web 服务器,也可以作为反向代理服务于其他 Web 服务器。

当充当反向代理时,Nginx 充当前端 Web 服务器,它将传入请求传递到后端、不同端口等的 Web 服务器。然后 Nginx 可以处理 SSL / HTTPS、GZip、缓存标头、负载平衡等方面还有很多其他的东西。后面的 Web 服务器不需要知道如何处理这个问题。而且 - 你只有一个网络服务器,你需要学习如何配置 SSL / HTTPS、GZip 等 - 这就是 Nginx。我在 Jetty 前使用 Nginx。Nginx 处理所有 SSL / HTTPS 的东西,而 Jetty 只是在后面处理普通的 HTTP 请求。

安装 Nginx

您可以使用apt-get包管理器在 Ubuntu 上安装 Nginx ,如下所示:

apt-get install nginx

这应该会在您的 Ubuntu 服务器上安装最新版本的 Nginx。

要在其他 Linux 发行版上安装 Nginx,请在 Google、Bing 等上搜索。您将很容易找到在所需的 Linux 发行版上安装 Nginx 所需的命令行。

启动 Nginx

安装 Nginx 后,您将需要启动它。您可以使用以下命令执行此操作:

/etc/init.d/nginx start

要验证 Nginx 是否正在运行,请尝试将浏览器定向到 Ubuntu 服务器的 IP 地址(或域名)。确保您已在端口 80 上打开防火墙。

检查 Nginx 是否正在运行

检查 Nginx 是否正在运行的另一种方法是运行以下命令:

htop

在命令的输出中,在列表中查找“nginx 主进程”和“nginx 工作进程”。如果您在列表中看到这些进程,则 Nginx 正在运行。

重启 Nginx

每当您更改 Nginx 配置文件时,您都需要重新启动 Nginx。使用以下命令重新启动 Nginx:

/etc/init.d/nginx restart

一个 Nginx 重新启动,新的配置就会生效。

如果你的配置文件有错误,重启 Nginx 将会失败。重启命令会在它输出的行的末尾写一个小的“OK”或“Fail”,让你知道重启是失败还是成功。如果有错误,请更正,然后重新启动 Nginx。然后它应该再次工作。

Nginx 配置文件

Nginx 主配置文件位于:

/etc/nginx/nginx.conf

Nginx 配置文件可能包含其他配置文件。因此,您可以将配置分成多个较小的、可重用的配置文件,这些文件都包含在 Nginx 主配置文件中。

要配置 Nginx,我们必须对 Nginx 配置文件进行更改。在更改之前制作原始配置文件的副本。这样,您可以随时返回原件,以防您弄乱副本。以下是复制原始 Nginx 配置文件的方法:

cp /etc/nginx/nginx.conf /etc/nginx.conf.orig

该文件/etc/nginx.conf.orig现在包含原始 Nginx 配置文件的副本。

原始配置文件示例

这是我原来的 Nginx 配置文件的样子。在你看到的任何地方[\n],这意味着与原始文件相比,我插入了一个换行符,以便更容易在浏览器中查看文件。的#是注释。

image.png

image.png

image.png

配置 Nginx

配置 Nginx 是通过配置文件完成的。具体配置什么取决于你想让 Nginx 做什么。我会在不久的将来写更多关于它的内容。在此之前,YouTube 上的这个视频是一个好的开始:

[使用 Nginx 设置网络服务器]

使用 SSL/HTTPS 将 Nginx 配置为反向代理

这是一个示例nginx.conf(Nginx 配置文件),它向您展示了如何将 Nginx 配置为反向代理。同样,[\n]我插入换行符的标记使文件更容易在浏览器中查看。删除[\n]您自己版本的此文件中的和 换行符。有关配置的更多详细信息在文件列表之后。

image.png

image.png

反向代理的所有配置都发生在server { ... }块内。

listen 443行指示 Nginx 侦听端口 443(默认 HTTPS 端口)。

server_name _指示Nginx的所有域名符合本server{ ... }节。

ssl on行指示 Nginx 打开 SSL/HTTPS。

ssl_certificate certificate-bundle.crt指向证书文件。证书文件路径是certificate-bundle.crt. 此路径可以指向单个证书文件,或者在我的情况下指向证书包,因为我从中间证书颁发机构购买了证书。该捆绑包包含我的证书作为文件中的第一个条目,以及之后的其余 CA 证书(有关更多详细信息,请参阅下一节)。

ssl_certificate_key private-key.pem点这是用来生成证书签名请求的原始私钥。Nginx 需要此密钥才能使用证书创建 SSL 连接。

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;行设置启用哪些 SSL 协议。在这个例子中,我只启用了 TSLv1、TLSv1.1 和 TLSv1.2。注意:某些 SSL 协议(如 SSLv3)存在安全弱点,因此请务必在启用所有 SSL 协议之前查阅安全指南。

location / { ... }部分指示Nginx的所有请求从转发/和向下网站的虚拟目录结构,到Web服务器上运行http://127.0.0.1:8080,这是端口8080在同一台机器上。

我使用 OpenSSL 生成了我的私钥和证书签名请求。我有一个关于[使用 OpenSSL 创建私钥和证书签名请求以与 Web 服务器一起使用]的单独教程 。

将证书连接到一个文件中

如果您从中间证书颁发机构 (CA) 购买证书,您的 CA 可能会向您发送多个证书。这些证书之一是您的。另一个是CA的证书。然后 CA 可能会向您发送来自其他 CA 的证书链,这些证书已用于签署您的 CA 证书(这就是为什么您的 CA 是“中间”CA 而不是根 CA 的原因)。

为了让 Nginx 能够使用您的中间 CA 的证书,您需要将包括您的在内的所有证书连接到一个证书文件中。您的证书必须是此串联文件中的第一个条目。

这是我与 NameCheap.com 的 SSL 证书(Comodo Positive SSL - 最便宜的选项)一起使用的两个 unix 命令,用于将证书连接到单个证书包文件中。[\n]+ 换行符再次由我插入。删除[\n]和换行符,所以命令只是一行。

 cat AddTrustExternalCARoot.crt COMODORSAAddTrustCA.crt [\n]
    COMODORSADomainValidationSecureServerCA.crt> Comodo-ca-certificate-bundle.crt

第一个命令将 Comodo 证书与证书链中的其余证书连接起来。

第二个命令将您的证书 ( myserver-com.crt)插入到证书包文件的顶部:

cat myserver-com.crt comodo-ca-certificate-bundle.crt > certificate-bundle.crt

您现在可以certificate-bundle.crt从 Nginx 配置文件中指向,如上一节中所示。