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.从路人到入门的更多相关文章

  1. [转]Nginx基本功能极速入门

    原文链接:Nginx基本功能极速入门 | 叉叉哥的BLOG 本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理.废话不多,直接开始. 1.静态HTTP服务器 ...

  2. Nginx开发HTTP模块入门

    Nginx开发HTTP模块入门 我们以一个最简单的Hello World模块为例,学习Nginx的模块编写.假设我们的模块在nginx配置文件中的指令名称为hello_world,那我们就可以在ngi ...

  3. nginx http模块开发入门

    导语 本文对nginx http模块开发需要掌握的一些关键点进行了提炼,同时以开发一个简单的日志模块进行讲解,让nginx的初学者也能看完之后做到心里有谱.本文只是一个用作入门的概述. 目录 背景 主 ...

  4. Spring Boot2 系列教程(二十七)Nginx 极简扫盲入门

    上篇文章和大家聊了 Spring Session 实现 Session 共享的问题,有的小伙伴看了后表示对 Nginx 还是很懵,因此有了这篇文章,算是一个 Nginx 扫盲入门吧! 基本介绍 Ngi ...

  5. nginx使用与配置入门指南

    这是一篇关于nginx使用与配置的入门指南,但不包括nginx的编译与安装.我假定你知晓如何安装nginx.对大多数Linux系统来说,nginx都已经存在于它们的软件包里,直接使用系统提供的软件管理 ...

  6. nginx windows负载均衡入门

    前言 做了几年开发,都是只管码代码,没有参与过项目的部署,为了知识体系更加完整,于是开始学习一下负载均衡.查了一下资料,觉得用nginx +iis 比较简单,于是小试牛刀. 步骤 准备工作 下载ngi ...

  7. nginx负载均衡之入门配置

    先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解释N台服务器平均分担负载,不会因为某台服务器负载高宕机而某台服务器闲置的情况.那么负载均衡的前提就是要有多台服务器才能实现,也就是两台以上 ...

  8. Nginx基本功能极速入门

    http://xxgblog.com/2015/05/17/nginx-start/ 本文主要介绍一些Nginx的最基本功能以及简单配置,但不包括Nginx的安装部署以及实现原理.废话不多,直接开始. ...

  9. nginx 反向代理 ,入门

    入门:http://www.cnblogs.com/jjzd/p/6691500.html 启动,重新加载:http://blog.csdn.net/zhongguozhichuang/article ...

随机推荐

  1. ECMAScript6-1

    1.let与const ES205(ES6)新增两个重要的JavaScript关键字:let和const let声明的变量只在let命令所在的代码块内有效,const声明一个只读的常量,一旦声明,其值 ...

  2. 基于 SpringBoot2.0+优雅整合 SpringBoot+Mybatis

    SpringBoot 整合 Mybatis 有两种常用的方式,一种就是我们常见的 xml 的方式 ,还有一种是全注解的方式.我觉得这两者没有谁比谁好,在 SQL 语句不太长的情况下,我觉得全注解的方式 ...

  3. 记录ssis的两个异常解决办法

    1.Foreach文件枚举提示变量为空的解决办法:把foreach属性窗口中的DelayValidation设置为True就可以了 2.csv导入数据库提示:无法在 unicode 和非 unicod ...

  4. 屏蔽打开文件时提示“您尝试打开的文件xxx.xls的格式与文件扩展名指定的格式不一致。打开文件前请验证文件没有损坏且来源可信。是否立即打开该文 件?”

    修改注册表解决 1.打开注册表编辑器 方法:开始 -> 运行 -> 输入regedit -> 确定 2.找到注册表子项 HKEY_CURRENT_USER\Software\Micr ...

  5. Alpha冲刺(11/10)——2019.5.3

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺(团队) 团队目标 切实可行的计算机协会维修预约平台 开发工具 Eclipse 团队信息 队员学号 ...

  6. storm并行

    Storm并行度 wordcount 统计job代码 public class WordCountTopology { private static final String SENTENCE_SPO ...

  7. Flume+Kafka+Storm+Redis 大数据在线实时分析

    1.实时处理框架 即从上面的架构中我们可以看出,其由下面的几部分构成: Flume集群 Kafka集群 Storm集群 从构建实时处理系统的角度出发,我们需要做的是,如何让数据在各个不同的集群系统之间 ...

  8. sqlException 使用relace 替换单引号

    我们从前端输入数据的时候,可能会输入一些 单引号 ,的字符 导致直接进行执行sql 语句保存的时候出现错误 如: 输入的有 单引号 保存按钮小代码 <asp:Button ID="bt ...

  9. 027 ElasticSearch----全文检索技术02---快速入门

    1.基本概念 Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的. 注意:6.0之前的版本有type(类型)概念,type相当于关系数据库的表,E ...

  10. 一个刚入行的BIOS工程师的自我简介

    现在是北京时间2019年11月28日,大学毕业已经工作四个多月.说来也是奇怪,大学里面明明主修机械电子工程,几乎是纯机械方向,毕业之后的工作却与主修的课程毫无关系.因为对机械这一行业毫无兴趣,大学里面 ...