概述

作为一个前端,我觉得必须要学会使用 nginx 干下面几件事:

  1. 代理静态资源
  2. 设置反向代理(添加https)
  3. 设置缓存
  4. 设置 log
  5. 部署 smtp 服务
  6. 设置 redis 缓存(选)

下面我按照这个节奏一一研究一遍,把心得记录下来,供以后开发时参考,相信对其他人也有用。

参考资料:

nginx 基本入门

Beginner’s Guide

nginx 重要点

(nginx 的安装我就不介绍了,自己按文档安装就行)

1.如果 nginx 已经开启,那么可以使用如下命令控制 nginx

nginx -s signal

// 其中 signal 是如下命令:
// stop — 直接关闭 nginx
// quit — 会在处理完当前正在的请求后退出,也叫优雅关闭
// reload — 重新加载配置文件,相当于重启
// reopen — 重新打开日志文件

2.nginx 配置文件的语法是有简单指令和块级指令构成的:

// 简单指令由名字和参数组成,中间用空格分开,并以分好结尾,示例如下
root /data/www; // 块级指令也叫上下文,用 { 和 } 大括号包裹,末尾没有分号,示例如下
// 其中注释以 # 开头
events {
worker_connections 4096; ## Default: 1024
}

注意:没有放在任何上下文中的指令都是处在主上下文中。events 和 http 的指令是放在主上下文中,server 放在 http 中, location 放在 server 中。结构示例如下:

events {

}

http {
server {
location / { }
}
}

3.检测配置文件,查看配置文件的位置:

nginx -t

// 返回如下:
// nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
// nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful

代理静态资源

我们现在准备使用本机的 nginx 代理静态资源。

1.随便建立一个文件夹,在里面创建 index.html 和 nginx.conf。我们准备使用 nginx.conf 修改配置,然后代理 index.html。

2.在 index.html 里面写入如下代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
hello world
</body>
</html>

3.在 nginx.conf 里面写入如下代码:

events {
# worker_connections 1024; ## Default: 1024
} http {
server {
listen 8765;
location / {
root /Users/zhouyang/Documents/tencent/test/local-nginx;
}
}
}

需要注意如下3点:

  1. root 那里不能使用相对路径,因为我们是改写 /usr/local/etc/nginx/nginx.conf,所以相对路径的相对位置并不是当前所在的文件夹,而是 /usr/local/etc/nginx/ 文件夹。获取当前文件夹绝对路径的方法是:直接把此文件夹拖到 bash 里面即可。

  2. 如果报错:nginx: [emerg] "server" directive is not allowed here in xxxxxx,意思是说 server 位置有误,它需要被放在 http 上下文里面!!

  3. 如果报错:nginx: [emerg] no "events" section in configuration,意思是说没有 events 上下文,这里配置文件中必须加上 events 上下文,即使里面什么指令也没有。(就像上面我把 events 里面的内容注释掉了一样)

4.在 bash 里面使用如下命令修改 nginx 配置,然后重启 nginx。

// 首先优雅退出 nginx
nginx -s quit // 然后从选定的配置文件启动 nginx
nginx -c /Users/zhouyang/Documents/tencent/test/local-nginx/nginx.conf

注意:第二步不能加 -t 参数写成nginx -t -c /Users/zhouyang/Documents/tencent/test/local-nginx/nginx.conf,因为 -t 参数只是检查配置,并且不启动 nginx。

5.打开 localhost:8765,即可看到 hello world。

前端必须掌握的 nginx 技能(1)的更多相关文章

  1. 前端必须掌握的 nginx 技能(4)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  2. 前端必须掌握的 nginx 技能(3)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  3. 前端必须掌握的 nginx 技能(2)

    概述 作为一个前端,我觉得必须要学会使用 nginx 干下面几件事: 代理静态资源 设置反向代理(添加https) 设置缓存 设置 log 部署 smtp 服务 设置 redis 缓存(选) 下面我按 ...

  4. [Linux] 一个前端必会的 Nginx 免费教程-在虚拟机中用deepin测试

    原文技术胖的 nginx 技术胖 专注于前端开发 deepin Linux Deepin 是一个基于 DEB 包管理的一个独立操作系统,和那些 Ubuntu(下个大版本是基于 debian 开发) 的 ...

  5. 前端开发者必备的Nginx知识

    摘要: 最常用的Web服务器 -- Nginx 原文:前端开发者必备的Nginx知识 作者:ConardLi Fundebug经授权转载,版权归原作者所有. Nginx在应用程序中的作用 解决跨域 请 ...

  6. 前端必须知道的 Nginx 知识

    Nginx一直跟我们息息相关,它既可以作为Web 服务器,也可以作为负载均衡服务器,具备高性能.高并发连接等. 1.负载均衡 当一个应用单位时间内访问量激增,服务器的带宽及性能受到影响, 影响大到自身 ...

  7. 前端打包文件在nginx上403的解决办法

    遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如webpack等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如nginx等. 这次遇到的问题 ...

  8. 前端打包文件在 nginx 上 403 的解决办法

    遇到的问题表现出来就是如题所述,因此作为题目. 我们知道,前端有很多方便的构建和打包工具,如 webpack 等,通常我们会把前端文件打包到dist目录下,部署到服务器上,如 nginx 等. 这次遇 ...

  9. 谁说前端不需要懂-Nginx反向代理与负载均衡

    转:https://juejin.im/post/5b01336af265da0b8a67e5c9 学到老活到老 前端圈一直很新,一直要不停的学习,而且在进入大厂的路上,还要求熟悉一门后台语言等等.用 ...

随机推荐

  1. JS实现hasClass addClass removeClass

    // 判断class有无 function hasClass(ele, cls) { if (ele) { cls = cls || '' if (cls.replace(/\s/g, '').len ...

  2. [Linux]Linux下经常会用到的简单实例(持续更新)

    1.查找某些进程并结束他们: ps -elf | grep '进程关键字' | awk '{print $4}'| xargs kill -9 解析: ps -elf 的 -e 代表列出所有进程,-l ...

  3. python字符串/列表/字典互相转换

    python字符串/列表/字典互相转换 目录 字符串与列表 字符串与字典 列表与字典 字符串与列表 字符串转列表 1.整体转换 str1 = 'hello world' print(str1.spli ...

  4. 缓存机制总结(JVM内置缓存机制,MyBatis和Hibernate缓存机制,Redis缓存)

    一.JVM内置缓存(值存放在JVM缓存中) 我们可以先了解一下Cookie,Session,和Cache Cookie:当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cooki ...

  5. MySQL下载~安装教程~这里示例 MySQL 8.0 Command Line Client

    打开 https://www.mysql.com 也可以选择我分享的百度网盘文件 MySQL8.0.16.0 安装包 https://pan.baidu.com/s/1U8DkyJVp9Zvx7Zok ...

  6. Scala Nothing 从官方DOC翻译

    Nothing is - together with scala.Null - at the bottom of Scala's type hierarchy. Scala中的Nothing和Null ...

  7. mysql个人初配置

    记录下在ubuntu 18.04.3 LTS环境中安装mysql和个人初期简单设置. 1:安装myslq:sudo apt install mysql-server. 2:设置root密码.由于我没有 ...

  8. dataTable 、dataView、Dataset 区别

    dataTable .dataView.Dataset 区别的经典回答 1.DataView是DataTable的表示,DataTable表里的记录是没有顺序的,但显示可以有不同顺序(DataVIew ...

  9. Ubuntu16.04下caffe CPU版的图片训练和测试

    一 数据准备 二.转换为lmdb格式 1.首先,在examples下面创建一个myfile的文件夹,来用存放配置文件和脚本文件.然后编写一个脚本create_filelist.sh,用来生成train ...

  10. GUI学习之三十四——QSS样式表

    今天是一个大课题:QSS样式表 一.概念: QSS是Qt Style Sheet——Qt样式表,是用来自定义控件外观的一种机制;可以把他类比成CSS,但是不及其功能强大. 二.使用: 我们做一个模板, ...