nginx.从路人到入门

Posted dagaiguanyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx.从路人到入门相关的知识,希望对你有一定的参考价值。

nginx 提供各种各样的服务器功能,本文记录 nginx 最基础的操作:

  • 开启、停止、重载配置
  • 静态文件服务器
  • 反向代理

本文操作系统环境为 ubuntu18

安装

官方安装指导

开启、停止、重载配置

sudo nginx # 开启
sudo nginx -s stop # 快速停止
sudo nginx -s quit # 优雅停止
sudo nginx -s reload # 重载配置
  • 停止 nginx 运行有两种方式,区别在于,“快速停止”会立刻停止 nginx;而 “优雅停止” 会等待已收到请求处理完毕再退出。也就是说,如果现在发出优雅停止命令,nginx 不会立刻停止运行,而是先看看,现在已收到的请求处理完没有,如果有的话,就会等待已收到的请求处理完再退出,当然这种情况下,如果有新的请求,是不会处理的。
  • 重载配置是在 nginx 运行期间改变 nginx 的“行为”,nginx 的行为定义在配置文件里,修改配置文件并保存后,这些配置不会立刻生效,必须重启或者使用重载配置命令。

配置文件

想让 nginx 干什么事,要通过配置文件来说明,码者当前使用的 ubuntu18,配置文件在 /etc/nginx/nginx.conf
为了不使接下来的配置受老配置或者默认配置的影响,码者建议删除这个配置文件的所有内容,从零开始。(生产环境慎用)

静态文件服务器

怎么做

比如我想把home/gy/static这个目录下的文件作为静态文件供别人访问,我可以这么做

  • 创建目录 home/gy/static,并在这个目录里放一个图片或者html文件(这里我先放一个 test.html)
  • 告诉 nginx,我的静态文件放在 /home/gy/static目录下。也就是,修改配置文件为以下内容:
events {}
http {
  server {
    root /home/gy/static;
  }
}
  • 重载配置sudo nginx -s reload
  • 试一下,在浏览器里访问localhost/static/test.html

如果使用远程主机,应该用 ip 地址替换 localhost,如果 404 了,检查一下防火墙 80 端口和云服务器安全组规则

一点解释

  • 对于任何功能强大、可定制性强的工具,其配置文件一般都非常复杂,完全理解配置文件是需要花费巨大精力且没有必要的。大多数情况下,我们只需要根据我们自己的需求去了解部分功能的配置,所以重要的不是为什么(比如:为什么第一行必须有一个 events?),而是怎么办(比如:我需要做哪些事才能配置一个静态文件服务器)。
  • 第一行 events {}定义一些事件相关的内容,本文不涉及,所以 events 里没有任何内容,但是如果没有这一行代码的话,这个配置就不完整,是不可以被使用的,所以加了这么一行配置
  • 第二行到最后,用来定义 “http 相关的” -> “服务器内容”,这里只需要指定一个服务器的根目录就行

目录导航

通常情况下静态文件服务器只提供文件的获取,但是 nginx 提供了类似 web文件浏览器 的功能,就是可以访问一个目录,结果就是得到这个目录下有哪些文件、文件夹,如下图

技术图片

只需要在 root 下一行添加autoindex on;就可以了。如果当前的 nginx 只是用来托管一个静态网站或者图片,那么这个功能是不需要的。

修改配置后记得重载配置

反向代理

关于代理和反向代理的意义,建议看这个例子

为什么需要反向代理呢?当然,有无数需要反向代理的情况。比较常见的一种情况是:多个 web 应用部署在同一个服务器上,而这些 web 应用都需要 80 端口。这时候,我们需要用 nginx 来导流,把以 /a 开头的请求转发到 a 应用里,把以 /b 开头的请求转发到 b 应用里

events {}
http {
  server {
    location /a {
      proxy_pass http://localhost:8081;
    }
    location /b {
      proxy_pass http://localhost:8082;
    }
  }
}

这时,请求 http://localhost/a/resource就会转发到 http://localhost:8081/a/resource

参考

以上是关于nginx.从路人到入门的主要内容,如果未能解决你的问题,请参考以下文章

Nginx从入门到精通Nginx环境搭建

Nginx从入门到精通Nginx环境搭建

nginx教程从入门到精通

Nginx视频教程|Nginx从入门到实践

Nginx从入门到实战

Nginx 从入门到实践,万字详解!