Zervan的小站 Zervan的小站
首页
  • 测评

    • 蓝牙耳机测评
  • 渗透

    • 网络渗透学习指南
  • 前端

    • 学习web开发
  • 版本控制与管理

    • Github入门与实践
  • 博客开发指南

    • 利用GitHub建立博客
  • 网文梗概-序
  • 我们的文学之路
  • 《世界观体系》
  • 《人物设定集》
  • 《诗集》
  • 《素材》
  • universe

    • 新冠疫情与外星人
  • human

    • 人的自由意志论
  • social

    • 科技的未来
  • school

    • 我们的大学
  • philosophy

    • 关于虚无主义
  • 日志
  • 支持我们
  • 友情链接
about
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Zervan

天下最普通的人之一
首页
  • 测评

    • 蓝牙耳机测评
  • 渗透

    • 网络渗透学习指南
  • 前端

    • 学习web开发
  • 版本控制与管理

    • Github入门与实践
  • 博客开发指南

    • 利用GitHub建立博客
  • 网文梗概-序
  • 我们的文学之路
  • 《世界观体系》
  • 《人物设定集》
  • 《诗集》
  • 《素材》
  • universe

    • 新冠疫情与外星人
  • human

    • 人的自由意志论
  • social

    • 科技的未来
  • school

    • 我们的大学
  • philosophy

    • 关于虚无主义
  • 日志
  • 支持我们
  • 友情链接
about
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 测评

  • 渗透

  • 工具

  • 前端

  • 英语考试攻略

  • 区块链投资

  • 版本控制与管理

    • 博客开发指南

      • 部署博客-GitHub Pages
      • Nginx安装配置-Ubuntu2004
        • 前言
        • 准备工作
        • 安装 Nginx
        • 配置防火墙
        • 检查nginx状态
        • Nginx基本管理命令
        • 设置服务器块(Server block)
        • Nginx 目录结构
          • 内容
          • 服务器配置
          • 服务器日志
          • Nginx 配置文件结构
        • 总结
      • MySQL的安装及使用-Ubuntu2004
      • 服务器上的Git-配置服务器
      • 静态Blog的theme开发
      • 发布dll
      • 修改nginx_conf部分配置
      • 关于 Nodejs
    • Github入门与实践
    • GitHub资源使用指南
    • Git初学指南
    • license相关
    • Git实际操作
  • code
  • 版本控制与管理
  • 博客开发指南
Zervan
2020-09-01

Nginx安装配置-Ubuntu2004

Nginx 是全球使用最广泛的 web servers 之一。 它甚至负责托管互联网上一些超级大流量的网站也不在话下。很多情况下,它比 Apache 占用更少资源,并且可以使用它作为 Web 服务器或反向代理来使用。

# 前言

Nginx 发音 “engine x” ,是一个开源软件,高性能 HTTP 和反向代理服务器,用来在互联网上处理一些大型网站。它可以被用作独立网站服务器,负载均衡,内容缓存和针对 HTTP 和非 HTTP 的反向代理服务器。和 Apache相比,Nginx 可以处理大量的并发连接,并且每个连接占用一个很小的内存。

本文主要描述如何在 Ubuntu 20.04 中安装和配置 Nginx。

# 准备工作

首先我们要有一台安装好 Ubuntu 20.04 的服务器。且保证以 sudo 用户身份登录,不能运行 Apache 或者 其他处理进程在80端口和443端口。

# 安装 Nginx

由于 Nginx 可以从 ubuntu 源仓库中获得,因此我们可以使用 apt 来安装 Nginx。

我们可以使用以下命令安装 Nginx 到 Ubuntu 中。

sudo apt update
sudo apt upgrade
sudo apt install nginx

选择 Y 来开始安装,apt 会帮你把 Nginx 和它所必备的依赖安装到我们的服务器中。

一旦安装完成,Nginx 将会自动被启动。你可以运行下面的命令来验证它:

sudo systemctl status nginx

输出类似下面这样:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2020-05-02 20:25:43 UTC; 13s ago
...

# 配置防火墙

现在你已经在你的服务器上安装和运行了 Nginx,你需要确保你的防火墙被配置好,允许流量通过 HTTP(80)和 HTTPS(443)端口。 在测试 Nginx 之前,我们需要调整防火墙,让他允许 Nginx 服务通过。Nginx ufw 在安装时会把他自身注册成为服务。

sudo ufw app list

输出结果:

kalasearch@chuan-server:~$ sudo ufw app list
Available applications:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH

你可以看到 Nginx 提供了三个配置文件:

  • Nginx Full

    开端口80 正常,未加密的网络流量

    端口443 TLS / SSL加密的流量

  • Nginx HTTP

    仅打开端口80 正常,未加密

  • Nginx HTTPS

    仅打开端口443 TLS / SSL加密

我们使用 Nginx HTTP 来做本教程演示。

sudo ufw allow 'Nginx Full'

我们用以下命令来查看更改结果

sudo ufw status

我们可以在输出结果中看到

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx Full                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

# 检查nginx状态

在安装结束后,Ubuntu 会启动 Nginx 。 Web 服务器应该已经在运行了。

我们可以通过 systemd 来检查 init 系统状态,确保它正在运行:

systemctl status nginx
kalasearch@chuan-server:~$ systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset:>
     Active: active (running) since Wed 2020-07-29 07:21:53 UTC; 23min ago
       Docs: man:nginx(8)
   Main PID: 3340 (nginx)
      Tasks: 2 (limit: 2248)
     Memory: 4.3M
     CGroup: /system.slice/nginx.service
             ├─3340 nginx: master process /usr/sbin/nginx -g daemon on; master_>
             └─3341 nginx: worker process

Jul 29 07:21:52 chuan-server systemd[1]: Starting A high performance web server>
Jul 29 07:21:53 chuan-server systemd[1]: Started A high performance web server >
lines 1-13/13 (END)

如上所示,这个服务已经成功启动。接下来我们要直接来测试 Nginx 是否可以通过浏览器访问。

获得公网IP的命令:

curl -4 icanhazip.com

打开浏览器输入服务器IP就可以看到默认的 Nginx 加载页面。这说明服务器运行起来了。当然除了公网,我们也可以输入主机的内网 ip 通过局域网来访问。

# Nginx基本管理命令

停止开机自启动

sudo systemctl disable nginx.service

设置nginx服务开机自启动

sudo systemctl enable nginx.service

重新读取nginx配置

(这个最常用, 不用停止nginx服务就能使修改的配置生效)

sudo systemctl reload nginx.service

查看nginx正在运行的进程,如果有就kill掉

ps -ef |grep nginx
sudo kill -9 XXX

测试nginx配置是否正确

sudo nginx -t

重启nginx服务:

sudo service nginx restart

停止Web服务器:

sudo systemctl stop nginx

在停止时,启动Web服务器:

sudo systemctl start nginx

停止然后重新启动:

sudo systemctl restart nginx

只是修改配置,在不终止终端的情况下热加载:

sudo systemctl reload nginx

禁止nginx启动服务器时跟随系统启动(通常默认情况下,Nginx 会在服务器启动时跟随系统启动):

sudo systemctl disable nginx

要重新让系统启动时引导 Nginx 启动,那么我们可以输入:

sudo systemctl enable nginx

# 设置服务器块(Server block)

使用Nginx Web服务器时,服务器块(类似于Apache中的虚拟主机)可用于封装配置详细信息,并在一台服务器中托管多个域。我们将建立一个名为 example.com 的域,但我们可以用自己的域名替换它。

在 Ubuntu 上的 Nginx 默认情况下启用了一个服务器块(server block),服务器块的配置是为给服务器的目录提供地址 /var/www/html。尽管这对于单个站点非常有效,但是如果我们在服务器上托管多个站点,则可能变很臃肿。让我们给/var/www/html目录添加上分站点目录。

比如我们的网站是 zervan.cn ,那我们创建一个对应的目录 zervan.cn 目录:

sudo mkdir -p /var/www/zervan.cn/html

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

sudo chown -R $USER:$USER /var/www/zervan.cn/html

如果我们没有修改自己的umask值,那么 Web 根目录的权限应该正确,我们可以通过输入以下命令来确认:

sudo chmod -R 755 /var/www/zervan.cn

接下来,让我们来编辑index.html :

vi /var/www/zervan.cn/html/index.html

在其中,添加以下示例HTML:

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

完成后保存并关闭文件。

接下来我们为 Nginx 来创建一个服务器块。与直接修改默认配置文件不同,我们在以下位置创建一个新文件:/etc/nginx/sites-available/zervan.cn

sudo vi /etc/nginx/sites-available/zervan.cn

粘贴到以下内容添加到文件中,这个块的配置与默认块的配置相似,但针对我们的新目录和域名进行了更新:

/etc/nginx/sites-available/zervan.cn

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

接下来,让我们通过在sites-enabled目录新建一个链接,好让 Nginx 在启动过程中会读取这个目录:

sudo ln -s /etc/nginx/sites-available/zervan.cn /etc/nginx/sites-enabled/

现在已启用并配置了两个服务器块,以及基于它们的listen和server_name指令响应请求:

  • zervan.cn: 将会响应zervan.cn 和 www.zervan.cn的请求
  • default: 将会响应 80 端口的请求,以及不能匹配到两个服务器块上的请求

为避免可能由于添加其他服务器名称而引起的哈希存储区内存问题,有必要调整/etc/nginx/nginx.conf文件中的单个值。

打开文件:

sudo vi /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://example.com域名访问我们的服务器时,Nginx 会将它指向我们刚刚创建的 Html 页面。

# Nginx 目录结构

# 内容

/var/www/html 默认的 Web 页面。默认打开可以看到 Nginx 页面。我们可以通过更改 Nginx 配置来更改文件。

# 服务器配置

  • /etc/nginx Nginx 配置目录。所有 Nginx 的配置文件都在这里。
  • /etc/nginx/nginx.conf Nginx 的配置文件。大多数全局配置可以通过这个文件来修改。
  • /etc/nginx/sites-available/sites-enabled 用来存储服务器下每个站点服务器块的目录。 默认情况下 Nginx 不会直接使用目录下的配置文件,需要我们更改配置来告诉 Nginx 来去读。
  • /etc/nginx/sites-enabled/sites-available 这里是存储已经启用站点服务器块的目录。
  • /etc/nginx/snippets 这个目录包含一些 Nginx 的配置文件。可打开详细查看这些配置文件到文档进行学习。

# 服务器日志

  • /var/log/nginx/access.log 这里是 Nginx 到日志文件,对 Web 服务器的每个请求都会记录在这个日志中。
  • /var/log/nginx/error.log 记录 Nginx 运行过程中发生的错误日志。

# Nginx 配置文件结构

  • 所有的 Nginx 配置文件都在/etc/nginx/目录下。

  • 主要的 Nginx 配置文件是/etc/nginx/nginx.conf。

  • 为每个域名创建一个独立的配置文件,便于维护服务器。你可以按照需要定义任意多的 block 文件。

  • Nginx 服务器配置文件被储存在/etc/nginx/sites-available目录下。在/etc/nginx/sites-enabled目录下的配置文件都将被 Nginx 使用。

  • 最佳推荐是使用标准的命名方式。例如,如果你的域名是mydomain.com,那么配置文件应该被命名为/etc/nginx/sites-available/mydomain.com.conf

  • 如果你在域名服务器配置块中有可重用的配置段,把这些配置段摘出来,做成一小段可重用的配置。

  • Nginx 日志文件(access.log 和 error.log)定位在/var/log/nginx/目录下。推荐为每个服务器配置块,配置一个不同的access和error。

  • 你可以将你的网站根目录设置在任何你想要的地方。最常用的网站根目录位置包括:

    • /home/<user_name>/<site_name>
    • /var/www/<site_name>
    • /var/www/html/<site_name>
    • /opt/<site_name>

# 总结

以上就是在 Web 服务器中如何安装和配置 Nginx 服务。你可以开始部署你的应用,并且使用 Nginx 作为一个网络或者代理服务器。

编辑 (opens new window)
上次更新: 2023/2/21 22:14:43
部署博客-GitHub Pages
MySQL的安装及使用-Ubuntu2004

← 部署博客-GitHub Pages MySQL的安装及使用-Ubuntu2004→

最近更新
01
修改nginx_conf部分配置
02-22
02
高学历宗教人士
12-04
03
理性思维
12-04
更多文章>
Zervan的小站 · VERSION: 1.0.128 · 基于vilivala构建 | pv と uv | Copyright © 2021-2023 | 鲁ICP备2021036977号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式