服务器端知识库nginx基础知识篇

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 随着spa架构的普及,在日常开发中无论对于前端还是服务端的开发都带来了很大的便利,前端同学也能接触到更多的知识,其中前端的服务部署也慢慢转移到了前端开发中。而目前最常用的前端服务部署方案便是nginx代理服务器。

前言


随着spa架构的普及,在日常开发中无论对于前端还是服务端的开发都带来了很大的便利,前端同学也能接触到更多的知识,其中前端的服务部署也慢慢转移到了前端开发中。而目前最常用的前端服务部署方案便是nginx代理服务器。本节主要是了解下nginx的基本知识(注:高深点的我也不会...)

基础概念


是什么

  • 是一个使用c开发的http服务器
  • 是一个轻量级高并发的服务器
  • 是一个高性能,高可靠开源的服务器
  • 是一个跨平台服务器,可以运行在Linux,Windows等各个操作系统上

能干什么

  • 可以使用nginx快速搭建静态网站服务器
  • 可以作为正向使用:如代理客户端发出请求,常在vpn,本地解决跨域。
  • 可以作为反向代理使用:如实现负载均衡,隐藏服务器的信息
  • 实现服务的热部署。

怎么用

  • 安装:不同的系统安装方式有所差异,目前基本服务器系统是ubuntu和mac,安装命令如下:
//ubuntu
sudo apt-get install nginx
//mac
sudo brew install nginx
  • 启动
//第一种
nginx
//第二种
service start nginx
  • 关闭
//通过nginx命令
service stop nginx/nginx -s stop
//通过进程
kill -TERM 80(nginx进程号可以快速停止)
kill -QUIT 80(nginx进程号从容停止)
pkill -9 nginx(强制停止所有nginx进程)
  • 重启
//nginx命令
nginx -s reload
//进程命令
kill -HUP 80(nignx进程号)

常用配置项


在学习nginx初识我们就应该知道nginx是模块化的结构,不同的模块负责不同的功能,基本上每个不同的模块都会对应一个或者多个不同的配置指令。我们为nginx设置不同的功能其实就是去设置其不同的功能指令。

nginx基本配置概念

上一小节已经介绍了nginx的基础概念,本节主要来了解下nignx中常用的模块以及对应的指令。在学习基础配置之前我们需要了解nginx以下几个概念:

  • nginx的配置分为模块和指令,指令是分布在每一个块中。
  • 同一个配指令,配在不同的块中时,有不同的作用域。
  • 有些指令可以配置在不同的块中,有些只能在特定的块中。
  • 一个模块正常可以配置多个指令。

基本功能的指令(可以理解这些指令在nginx属于main模块)

//调试常用到的指令,
daemon on/off (default:on)
//nginx可以使用多个worker进程,我们可以设置进程数和进程连接数
worker_processes/worker_connections
//错误日志的保存位置
error_log
//指令实现配置文件的包含,类似于apache中的include///方法,可减少主配置文件d。
include
//进程id存储文件
master_process
//指定Nginx Worker进程运行用户,默认是nobody帐号。
pid
//指定Nginx Worker进程运行用户,默认是nobody帐号。
user
# 错误日志记录
error_log file [level];

其中include和user是nginx默认配置,我们很常见的,这两个指令也是我们必须要掌握的。

常用模块以及模块指令

  • http核心模块http指令
//http核心模块http指令(提供指定HTTP服务器指令的配置文件上下文。)
http{
    //
    server{
        //端口
        listen 80
        server_name www.example.com
        //指向跟目录
        root /var/html/index.html
        //
        location /{
            root /var/html/index.html
            //这个指令告诉Nginx测试每个文件的存在性,并使用第一个找到的文件作为URI。
            try_files index.html index.htm;
        },
        location /static{
        }
    }
}
  • gzip模块以及相关指令
//基础指令
  gzip on/off(default:off)
//设置用于压缩响应的缓冲区的数目和大小。默认情况下,缓冲区大小等于一个内存页
  gzip_buffers 
//压缩级别可以设置1-9,越大压缩越彻底
  gzip_comp_level
//根据正则相关条件禁用压缩
gzip_disable regex
//设置压缩响应所需的请求的最小HTTP版本。
gzip_http_version
//设置压缩文件最小长度
gzip_min_length
//指定压缩文件的类型
gzip_types (default:text/html;)

http模块以及其相关核心指令是我们在前端日常开发静态网站部署中最为常用的一个模块,gzip模块是目前前端新能优化方面起到了显著的效果,现在主流的浏览器都支持gzip压缩,所以我们不用再考虑兼容性的问题,对于这两个模块和相关指令我觉得掌握他们是很有必要的。

  • proxy模块及相关指令,nginx官方文档'The ngx_http_proxy_module module allows passing requests to another server.'和明确的说明了proxy是个代理请求模块,这个模块我们在日常前端开发中使用的还是比较频繁的。
//禁用或启用代理服务器的缓冲
proxy_buffering on/off
//默认从代理服务器读取第一部分缓冲区的大小
proxy_buffer_size 4k/12k
//默认从代理服务器读取缓冲区的大小
proxy_buffers 4k/12k
//定义用于缓存的共享内存区域
proxy_cache zone / off
...其他一系列nginx缓存配置请到详细文档查看
//定义用于与代理服务器建立连接的超时。 请注意,此超时通常不能超过75秒。
proxy_connect_timeout time
//设置代理服务器的协议和地址
proxy_pass url;

在日常开发中我们常常会使用proxy_pass来解决前端跨域问题,详细实现见下文,另外附带proxy的详细文档请查看

  • log 模块及相关指令
# 日志格式
log_format compression name [escape=default|json|none];
# 访问日志记录
access_log path compression;

通过access_log来配置nginx的请求日志,我认为这块在我们部署到线上时候是必须的。

常用内置变量

  • $content_type: 请求中的content type的body
  • $host: 请求行的主机名,或主机请求头字段的主机名,或匹配请求的服务器名(是指在Nginx配置文件中,在server块中,用server_name指令设置的值)
  • $uri:当前请求的URI
  • $server_port: nginx中配置定义的
  • $server_name: nginx中配置定义的server_name

实际基本应用


前端web服务器(以Ubuntu为例)

现在我们前端的前后端分离的项目基本都是放在nginx上运行的,所以掌握前端nginx服务器配置已经成了我们前端开发的必备技能之一

  • 服务器配置nginx环境
#安装nginx
apt-get install nginx
#测试安装
nginx -v
#运行 重启等基本命令我们上面已说明
#配置文件,ubuntu一般在/etc/nginx/nginx.conf
  • 编辑配置文件
http{
    server{
        //前端域名
        server_name www.example.com
        location /{
            //前端文件目录
            root /var/html/index.html
            //上文也有说明
            try_files index.html index.htm
        },
    }
}
  • 前端项目复制到对应的目录下,如此 一个简单的前端静态服务器就搭建完毕了

nigin实现正向代理

  • 一般大型企业或政府学校等为了安全起见,设置了局域网不能访问互联网。此时客户端通过代理服务器来访问,这便是正向代理

nginx实现反向代理

  • 反向代理给我们的服务带来了很大的安全性,因为当我们使用反向代理时候用户端将无法直接通过请求访问真正的内容服务器。
  • 反向代理负载均衡能极大提升服务器的性能,降低了服务器的压力,
  • 此外nginx的健康检查功能,提升了服务器的稳定性。
//通过反向代理解决跨域问题
location ^~/api/v1 {
        rewrite ^/apis/(.*)$ /$1 break;
        proxy_pass https://www.baidu.com/;
    }  

总结


随着前端工程化的发展,前端工程师扮演的角色越来越重要,需要掌握的技能也越来越多,nginx的使用必定会是未来前端工程的所需掌握的必备技能之一。如果你认为前端开发只是纯粹的写页面,那我们的发展局限性非常之大,也许你永远也不会发现编程的艺术之美。所以,放宽我们的视野拥抱不同的技术。


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
2月前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
69 3
|
2月前
|
负载均衡 应用服务中间件 Apache
Nginx与Apache的终极对决:揭秘Web服务器界的“速度与激情”!你不可不知的性能霸主如何颠覆传统,震撼互联网的根基!
【8月更文挑战第13天】互联网技术发展中,Web服务器至关重要,Nginx与Apache是最广泛使用的两种。Apache历史悠久,但Nginx以轻量级和高性能脱颖而出。Nginx采用事件驱动架构,高效处理大量并发连接,而Apache使用进程驱动,高并发下资源消耗大。以餐厅为例,Nginx像大堂经理同时处理多个顾客需求,远比Apache为每位顾客分配服务员更高效。性能测试显示Nginx处理能力远超Apache。此外,Nginx配置简洁灵活,尤其在负载均衡方面表现突出。尽管Apache适合动态内容处理,但在快速变化的互联网环境中,Nginx因其独特优势成为许多开发者和企业的首选。
59 7
|
2月前
|
应用服务中间件 Linux 网络安全
在Linux中,如何配置Apache或Nginx Web服务器?
在Linux中,如何配置Apache或Nginx Web服务器?
|
2月前
|
存储 负载均衡 应用服务中间件
FastDFS+Nginx:轻松搭建本地文件服务器
【8月更文挑战第19天】在现今互联网快速发展的时代,文件服务器作为支撑各种在线服务的重要基础设施,其稳定性和性能显得尤为关键。FastDFS作为一款开源的轻量级分布式文件系统,凭借其高效的文件管理功能,特别适合用于构建相册网站、视频网站等以文件为载体的在线服务。本文将详细介绍如何利用FastDFS和Nginx快速搭建一个本地文件服务器,为您的工作和学习提供技术支持。
197 0
|
2月前
|
关系型数据库 Linux 应用服务中间件
如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin
如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin
20 0
|
2月前
|
存储 Ubuntu 应用服务中间件
如何在虚拟专用服务器上配置 Nginx Web 服务器
如何在虚拟专用服务器上配置 Nginx Web 服务器
23 0
|
弹性计算 安全 应用服务中间件
ECS动手搭建Nginx
在ECS的centos7上搭建一个Nginx
1988 6
ECS动手搭建Nginx
|
6天前
|
存储 弹性计算 安全
阿里云第七代云服务器ECS性能、适用场景与价格参考
阿里云第七代云服务器ECS(Elastic Compute Service)作为阿里云最新一代的高性能计算产品,凭借其基于最新硬件架构和虚拟化技术的全面升级,在计算能力、存储性能、网络传输速度以及灵活性等多个方面实现了显著提升。这一代云服务器旨在为用户提供更为强大、稳定且可定制的云端基础设施服务,广泛适用于从基础的Web托管到复杂的高性能计算等多种应用场景。
|
5天前
|
弹性计算 网络安全
阿里云国际OpenAPI多接口快速管理ECS服务器教程
阿里云国际OpenAPI多接口快速管理ECS服务器教程