在Ubuntu 18.04上安装Nginx的方法

news/2024/9/17 7:17:19/ 标签: ubuntu, nginx, linux

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

介绍

Nginx 是世界上最流行的 Web 服务器之一,负责托管互联网上一些最大和最高流量的网站。在大多数情况下,它比 Apache 更节约资源,并且可以用作 Web 服务器或反向代理。

在本指南中,您将学习如何在 Ubuntu 18.04 服务器上安装 Nginx,以及重要的 Nginx 文件和目录。

先决条件

在开始本指南之前,您应该拥有一个具有 sudo 特权的常规非 root 用户,并在服务器上配置了基本防火墙。您可以按照我们的 Ubuntu 18.04 初始服务器设置指南来了解如何配置常规用户帐户。

当您有可用的帐户时,请以非 root 用户身份登录。

步骤 1 – 安装 Nginx

由于 Nginx 可在 Ubuntu 的默认存储库中找到,因此可以使用 apt 软件包管理系统从这些存储库安装它。

由于这可能是您在本会话中与 apt 软件包管理系统的首次交互,因此更新本地软件包索引,以便您可以访问最新的软件包列表。然后,您可以安装 nginx

sudo apt update
sudo apt install nginx

接受该过程后,apt 将在服务器上安装 Nginx 和任何必需的依赖项。

步骤 2 – 调整防火墙

在测试 Nginx 之前,需要调整防火墙软件以允许访问该服务。Nginx 在安装时会在 ufw 中注册自己作为一个服务,因此可以轻松地允许 Nginx 访问。

通过输入以下内容列出 ufw 知道如何使用的应用程序配置:

sudo ufw app list

您的输出应该是应用程序配置的列表:


Available applications:Nginx FullNginx HTTPNginx HTTPSOpenSSH

此列表显示了 Nginx 可用的三个配置文件:

  • Nginx Full:此配置文件打开端口 80(正常的未加密的 Web 流量)和端口 443(TLS/SSL 加密流量)
  • Nginx HTTP:此配置文件仅打开端口 80(正常的未加密的 Web 流量)
  • Nginx HTTPS:此配置文件仅打开端口 443(TLS/SSL 加密流量)

建议您启用最严格的配置文件,以允许您配置的流量。由于在本指南中尚未为服务器配置 SSL,因此只需要允许端口 80 上的流量。

您可以通过输入以下内容来启用此配置:

sudo ufw allow 'Nginx HTTP'

然后,验证更改:

sudo ufw status

您应该收到输出中允许的 HTTP 流量列表:


Status: activeTo                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

现在,您已添加了适当的防火墙规则,可以检查您的 Web 服务器是否正在运行并能够正确提供内容。

步骤 3 – 检查您的 Web 服务器

在安装过程结束时,Ubuntu 18.04 启动了 Nginx。Web 服务器应该已经启动并运行。

使用 systemd 初始化系统来确保服务正在运行:

systemctl status nginx
nginx.service - A high performance web server and a reverse proxy serverLoaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enActive: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s agoDocs: man:nginx(8)Main PID: 9039 (nginx)Tasks: 2 (limit: 1151)CGroup: /system.slice/nginx.service├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro└─9041 nginx: worker process

此输出显示服务已成功启动。但是,测试的最佳方法是实际从 Nginx 请求页面。

您可以访问默认的 Nginx 登陆页面,确认软件是否正常运行,方法是导航到您服务器的 IP 地址。如果您不知道服务器的 IP 地址,可以通过几种不同的方式获取。

尝试在服务器的命令提示符中输入以下内容:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

您将收到几行。您可以尝试在 Web 浏览器中输入每个地址,以确认它们是否有效。

另一种方法是运行以下命令,该命令应该会生成您的公共 IP 地址,该地址是从互联网上的其他位置识别出来的:

curl -4 icanhazip.com

当您获得服务器的 IP 地址后,请在浏览器的地址栏中输入:

http://your_server_ip

您应该会收到默认的 Nginx 登陆页面:

!Nginx default page

此页面包含在 Nginx 中,用于验证服务器是否正常运行。

第四步 – 管理 Nginx 进程

现在你已经启动并运行了你的 Web 服务器,让我们来看一些基本的管理命令。

要停止你的 Web 服务器,请输入以下命令:

sudo systemctl stop nginx

要在停止状态下启动 Web 服务器,请输入以下命令:

sudo systemctl start nginx

要停止然后再次启动服务,请输入以下命令:

sudo systemctl restart nginx

如果你只是在进行配置更改,通常可以在不断开连接的情况下重新加载 Nginx 而不是重新启动它。要做到这一点,请输入以下命令:

sudo systemctl reload nginx

默认情况下,Nginx 被配置为在服务器启动时自动启动。如果这不是你想要的,你可以通过输入以下命令来禁用此行为:

sudo systemctl disable nginx

要重新启用服务以在启动时启动,可以输入以下命令:

sudo systemctl enable nginx

Nginx 现在应该在服务器重新启动时自动启动。

第五步 – 设置服务器块(推荐)

在使用 Nginx Web 服务器时,可以使用“服务器块”(类似于 Apache 中的虚拟主机)来封装配置细节,并从单个服务器上托管多个域。我们将设置一个名为 your_domain 的域,但你应该用你自己的域名替换它。要了解有关如何在 DigitalOcean 上设置域名的更多信息,请参阅我们的《DigitalOcean DNS 简介》。

在 Ubuntu 18.04 上,Nginx 默认启用了一个服务器块,配置为从 /var/www/html 目录中提供文档。虽然这对于单个站点效果很好,但如果你要托管多个站点,这可能会变得难以管理。让我们在 /var/www 中为我们的 your_domain 站点创建一个目录结构,将 /var/www/html 保留为默认目录,以便在客户端请求不匹配任何其他站点时提供服务。

按照以下方式创建 your_domain 目录,使用 -p 标志创建任何必要的父目录:

sudo mkdir -p /var/www/your_domain/html

接下来,使用 $USER 环境变量分配目录的所有权:

sudo chown -R $USER:$USER /var/www/your_domain/html

如果你没有修改 umask 值,你的 Web 根目录的权限应该是正确的,但你可以通过输入以下命令来确保:

sudo chmod -R 755 /var/www/your_domain

接下来,使用 nano 或你喜欢的编辑器创建一个示例 index.html 页面:

nano /var/www/your_domain/html/index.html

在里面,添加以下示例 HTML:

<html><head><title>Welcome to your_domain!</title></head><body><h1>Success! The your_domain server block is working!</h1></body>
</html>

完成后保存并关闭文件。如果你使用的是 nano,你可以通过按 CTRL + X 然后 YENTER 来退出。

为了让 Nginx 提供此内容,有必要创建一个带有正确指令的服务器块。而不是直接修改默认配置文件,我们在 /etc/nginx/sites-available/your_domain 创建一个新文件:

sudo nano /etc/nginx/sites-available/your_domain

添加以下配置块,它类似于默认配置,但针对你的新目录和域名进行了更新:

server {listen 80;listen [::]:80;root /var/www/your_domain/html;index index.html index.htm index.nginx-debian.html;server_name your_domain.com www.your_domain;location / {try_files $uri $uri/ =404;}
}

注意,我们已经将 root 配置更新为新目录,将 server_name 更新为域名。完成后保存并关闭文件。

接下来,通过从中创建一个链接到 sites-enabled 目录来启用文件,Nginx 在启动时会从该目录中读取:

sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

现在已启用两个服务器块,并配置为根据它们的 listenserver_name 指令响应请求(你可以在这里关于 Nginx 如何处理这些指令的信息):

  • your_domain:将响应对 your_domainwww.your_domain 的请求。
  • default:将响应在端口 80 上不匹配其他两个块的任何请求。

为了避免由于添加额外的服务器名可能导致的哈希桶内存问题,有必要调整 /etc/nginx/nginx.conf 文件中的单个值。打开文件:

sudo nano /etc/nginx/nginx.conf

找到 server_names_hash_bucket_size 指令,并删除 # 符号以取消注释该行:

...
http {...server_names_hash_bucket_size 64;...
}
...

完成后保存并关闭文件。

接下来,测试确保你的 Nginx 文件中没有语法错误:

sudo nginx -t

如果没有任何问题,重新启动 Nginx 以启用你的更改:

sudo systemctl restart nginx

Nginx 现在应该正在提供你的域名。你可以通过导航到 http://your_domain 来测试,你应该会看到类似以下内容:

!Nginx first server block

第6步 – 熟悉重要的 Nginx 文件和目录

现在你已经知道如何管理 Nginx 服务本身,你应该花几分钟时间熟悉一下一些重要的目录和文件。

内容

  • /var/www/html: 实际的网页内容,默认情况下只包括你之前看到的默认 Nginx 页面,它们存储在 /var/www/html 目录中。可以通过修改 Nginx 配置文件来更改这一点。

服务器配置

  • /etc/nginx: Nginx 配置目录。所有 Nginx 配置文件都存储在这里。
  • /etc/nginx/nginx.conf: 主要的 Nginx 配置文件。可以修改此文件来更改 Nginx 的全局配置。
  • /etc/nginx/sites-available/: 存储每个站点服务器块的目录。除非将其链接到 sites-enabled 目录,否则 Nginx 不会使用此目录中找到的配置文件。通常,所有服务器块配置都在此目录中完成,然后通过链接到其他目录来启用。
  • /etc/nginx/sites-enabled/: 存储已启用的每个站点服务器块的目录。通常,这些是通过链接到 sites-available 目录中找到的配置文件来创建的。
  • /etc/nginx/snippets: 此目录包含可以在 Nginx 配置的其他位置包含的配置片段。可以重构为片段的可重复配置段是很好的候选项。

服务器日志

  • /var/log/nginx/access.log: 您的网页服务器的每个请求都记录在此日志文件中,除非 Nginx 配置为不这样做。
  • /var/log/nginx/error.log: 任何 Nginx 错误都将记录在此日志中。

结论

现在你已经安装了你的网页服务器,你有很多选择可以用来提供内容以及你想要使用的技术来创建更丰富的体验。

如果你想构建一个更完整的应用程序堆栈,请查看这篇文章,了解如何在 Ubuntu 18.04 上配置 LEMP 堆栈。


http://www.ppmy.cn/news/1522440.html

相关文章

OpenHarmony鸿蒙开发( Beta5.0)智能手表应用开发实践

样例简介 本项目是基于BearPi套件开发的智能儿童手表系统&#xff0c;该系统通过与GSM模块&#xff08;型号&#xff1a;SIM808&#xff09;的通信来实现通话和定位功能。 智能儿童手表系统可以通过云和手机建立连接&#xff0c;同步时间和获取天气信息&#xff0c;通过手机下…

Redis缓存预热方案详解:提升应用性能与用户体验

文章目录 引言1. 为什么需要缓存预热&#xff1f;2. 缓存预热的基本原理2.1 数据选择2.2 加载策略 3. Redis缓存预热方案设计3.1 方案概述3.2 数据选择3.3 加载策略3.4 实现方式 4. 测试与监控4.1 单元测试4.2 监控 5. 总结 引言 在现代Web应用中&#xff0c;缓存技术已经成为…

云原生之WEB应用服务器Tomcat(持续更新中)

WEB应用服务器Tomcat 1.Tomcat功能介绍1.1 安装Tomcat1.2 生成启动文件 2.结合反向代理实现Tomcat部署2.1 利用nginx反向代理实现 3.Memcached&#xff08;解决sion丢失问题&#xff09;3.1 简介3.2 安装与启动 4.session 共享服务器 1.Tomcat功能介绍 Tomcat 服务器是一个免费…

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes 优势 1、构建了一个用于监督原始视频去噪的基准数据集。为了多次捕捉瞬间&#xff0c;我们手动为对象s创建运动。在高ISO模式下捕获每一时刻的噪声帧&#xff0c;并通过对多个噪声帧进行…

[数据集][目标检测]井盖丢失未盖破损检测数据集VOC+YOLO格式2890张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2890 标注数量(xml文件个数)&#xff1a;2890 标注数量(txt文件个数)&#xff1a;2890 标注…

使用Nginx获取客户端真实IP(real_ip_header)

使用 Nginx 获取客户端真实 IP 在使用 Nginx 作为反向代理或负载均衡器时&#xff0c;我们常常需要获取客户端的真实 IP 地址。然而&#xff0c;默认情况下&#xff0c;Nginx 的 $remote_addr 变量记录的 IP 地址可能是上游代理或负载均衡器的 IP&#xff0c;而非实际客户端的…

MySQL · 性能优化 · 提高查询效率的实用指南(上)

前言 在过去的几年里&#xff0c;MySQL作为一款开源数据库&#xff0c;因其稳定性和性能得到了广泛的应用。始终保持着强劲的增长趋势&#xff0c;越来越多的企业和开发者将其作为首选数据库&#xff0c;甚至有部分企业从Oracle迁移至MySQL。然而&#xff0c;随着使用的普及&a…

Django中的第一个自动化测试编写

跟着Django官网中的投票应用学习&#xff0c;其中有官方说明的一个bug:如果 Question 是在一天之内发布的&#xff0c;那么这个Question 应该显示“published_recently”&#xff0c;返回值为True &#xff0c;然而现在如果问题发布时间为30天之后(未来时间)&#xff0c;也会返…

防封!数字人直播防封!铭顺科技AI数智人抖音直播防封落地方案!!

数字人直播防不防封&#xff1f; 数字人直播有没有流量&#xff1f; 数字人直播能不能落地&#xff1f; 这是目前所有想入局AI数字人赛道、想用数字人直播、想做数字人项目的老板们最担心、最关心的问题&#xff01;但是&#xff0c;同行友商对此都噤若寒蝉&#xff0c;不敢跟…

手机同时传输USB功能与充电的实现及LDR6500的作用

在智能设备日益普及的今天&#xff0c;用户对于手机的功能需求愈发多样化&#xff0c;其中同时实现USB数据传输与充电功能成为了许多用户的迫切需求。这一功能的实现离不开先进的硬件技术和创新的芯片解决方案&#xff0c;而LDR6500正是这样一款能够满足这一需求的USB PD&#…

Spark与Kafka进行连接

在Java中使用Spark与Kafka进行连接&#xff0c;你可以使用Spark Streaming来处理实时流数据。以下是一个简单的示例&#xff0c;展示了如何使用Spark Streaming从Kafka读取数据并进行处理。 1. 引入依赖 首先&#xff0c;在你的pom.xml文件中添加必要的依赖项&#xff08;假设…

nginx配置负载均衡的几种方式

1&#xff0c;轮询&#xff08;默认&#xff09; 每个请求按时间顺序逐一分配到不同的后端服务器&#xff0c;如果后端服务器 down掉&#xff0c;能自动剔除。 # 反向代理配置upstream server_list{# 这个是tomcat的访问路径server localhost:8080;server localhost:9999;}serv…

八股集合1

在HTTPS中&#xff0c;加密方法主要包括两种类型的加密技术&#xff1a;非对称加密&#xff08;也称为公钥加密&#xff09;和对称加密。这两种加密技术在HTTPS握手过程中协同工作&#xff0c;确保数据的安全传输。下面是具体的加密方法及其作用&#xff1a; 公钥加密 (非对称…

无人机飞控之光流知识小结

要完成飞行器的定位&#xff0c;则必须要有位置的反馈数据。在户外&#xff0c;我们一般使用GPS作为位置传感器&#xff0c;然而&#xff0c;在室内&#xff0c;GPS无法使用&#xff0c;要完成定位功能&#xff0c;可以选用光流传感器。 本讲主要介绍如何通过下视摄像头估计飞…

K12智慧校园云平台源码,智慧校园小程序源码,支持PC+小程序,提供丰富的API接口,支持和其他系统的融合对接

智慧校园平台是目前教育信息化领域的热点之一。随着数字化转型的加速&#xff0c;越来越多的学校开始寻求解决方案&#xff0c;以提高教育管理的效率和质量。 智慧校园电子班牌系统是一种集成信息化技术、物联网、智能化的教育管理解决方案&#xff0c;它在校园内实现了信息共…

四个pdf软件分享,你更爱哪一款?

如果说现在用的最多的电子文档是什么&#xff0c;不是Word就是PDF&#xff0c;所以PDF编辑器几乎成了我们日常工作中不可或缺的工具。但面对市面上琳琅满目的PDF编辑器&#xff0c;到底哪一款才是你的菜呢&#xff1f;今天&#xff0c;我就来和大家聊聊我用过的四款编辑器&…

【重学 MySQL】十六、算术运算符的使用

【重学 MySQL】十六、算术运算符的使用 加法 ()减法 (-)乘法 (*)除法 (/ 或 div )取模&#xff08;求余数&#xff09; (% 或 mod )注意事项 在 MySQL 中&#xff0c;算术运算符用于执行数学运算&#xff0c;如加法、减法、乘法、除法和取模&#xff08;求余数&#xff09;等。…

Html、Css3动画效果

文章目录 第九章 动画9.1 transform动画9.2 transition过渡动画9.3 定义动画 第九章 动画 9.1 transform动画 transform 2D变形 translate()&#xff1a;平移函数&#xff0c;基于X、Y坐标重新定位元素的位置 scale()&#xff1a;缩放函数&#xff0c;可以使任意元素对象尺…

选择服务器机柜租用要注意哪些方面?

企业在进行选择服务器租用和托管后&#xff0c;大多数的企业会选择租用服务器机柜来进行放置&#xff0c;同时机房中也有着不同款式的机柜&#xff0c;使计算机行业中不可或缺的用品&#xff0c;那我们在选择服务器机柜租用时需要注意哪些方面呢&#xff1f; 接下来就让我们了解…

Flask如何创建并运行数据库迁移

Flask创建并运行数据库迁移的过程是一个涉及多个步骤的操作&#xff0c;旨在帮助开发者在开发过程中管理数据库模式的变化&#xff0c;而不需要手动地删除和重建数据库表&#xff0c;从而避免数据丢失。以下是一个详细的步骤说明&#xff1a; 一、准备工作 1. 安装必要的包 …