Nginx配置与应用详解

前言

Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能。Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品。目前,包括新浪、腾讯等知名网站都已使用Nginx作为Web应用服务器。本文带来的是Nginx配置与应用详解。

基础特性

基本功能

静态资源的web服务器,能缓存打开的文件描述符

反向代理服务器,缓存、负载均衡

支持FastCGI

模块化,非DSO机制,过滤器gzip,SSI和图像大小调整等

支持SSL

扩展功能

基于名称和IP做虚拟主机

支持keepalive

支持平滑配置更新或程序版本升级

定制访问日志,支持使用日志缓存以提高性能

支持url rewrite

支持路径别名

支持基于IP及用户的认证

支持速率限制,并发限制等

基本架构

一个master, 生成一个或多个worker

事件驱动:kqueue, epoll, /dev/poll

消息通知:select, poll, rt signals

支持sendfile, sendfile64

文件AIO

支持mmap

模块类别

核心模块

标准http模块

可选的http模块

邮件模块

第三方扩展模块

基本配置

虚拟主机

虚拟主机基本配置完成,当然虚拟主机里也可以有很多参数的,下文会提及到

访问控制

基于用户

认证文件由htpasswd命令创建

访问测试

基于IP

重启服务后访问测试

压缩功能

nginx将响应报文发送至客户端之前可以启用压缩功能,这能够有效地节约带宽,并提高响应至客户

端的速度。通常编译nginx默认会附带gzip压缩的功能,因此,可以直接启用之。

未压缩访问测试

重启服务,压缩后测试

压缩成功

防盗链

(1) 定义合规的引用

(2) 拒绝不合规的引用

访问测试

反向代理

Nginx通过proxy模块实现反向代理功能。在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI、客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream server)。

nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够将location定义的某URI代理至指定的上游服务器(组)上。如下面的示例中,location的/uri将被替换为上游服务器上的/newuri。

缓存

nginx做为反向代理时,能够将来自上游服务器的响应缓存至本地,并在后续的客户端请求同样内容时

直接从本地构造响应报文。

缓存前请求时间

缓存后请求时间

此时缓存目录应该有缓存文件生成

负载均衡

nginx可利用自身的upstream模块实现,upstream模块的负载均衡算法主要有三种,轮调(round-robin)、ip哈希(ip_hash)和最少连接(least_conn)三种。

如此便可实现简单的负载均衡功能

The end

好了,有关nginx的基础配置及应用就先说到这里了,第一次接触nginx,写的比较乱,敬请谅解。

来源:http://www.178linux.com/5320

本文分享自微信公众号 - 马哥Linux运维(magedu-Linux)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-12-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏惨绿少年

NFS存储服务部署

第1章 NFS介绍 1.1 NFS服务内容的概述 □ RPC服务知识概念介绍说明,以及RPC服务存在价值(必须理解掌握) □ NFS服务工作原理讲解(必须理解掌...

73500
来自专栏同步博客

memcached的安装以及php两个扩展软件安装(memcache、memcached)

百度云安装包:http://pan.baidu.com/s/1pKZeDwn  k3ap

13520
来自专栏IT笔记

Linux下如何查看CentOS版本

今天iptables居然不能使用了,赶紧查看了一下Linux版本了。居然更新到了CentOS7。 这里分享下查看命令: cat /etc/redhat-rele...

1.2K90
来自专栏区块链

Web安全常见漏洞修复建议

看各大发布漏洞的平台,发现众多挖洞大神精彩的漏洞发掘过程,但在修复建议或者修复方案处,给出千奇百怪神一般的回复,故而总结一下修复建议(才疏学浅不算太全敬请谅解,...

36560
来自专栏云计算教程系列

如何在Ubuntu上安装Buildbot

Buildbot是一个基于Python的持续集成系统,用于自动化软件构建,测试和发布。它使用Python的Twisted库来处理buildmaster和多个wo...

25960
来自专栏小巫技术博客

Android多模块构建合并aar解决方案

1.2K30
来自专栏抠抠空间

django自带权限机制

权限机制能够约束用户行为,控制页面的显示内容,也能使API更加安全和灵活;用好权限机制,能让系统更加强大和健壮。因此,基于Django的开发,理清Django权...

28630
来自专栏逸鹏说道

安装和搭建基于netcore的demo

系统CentOS安装:   网上很多教程,很详细,我就不再赘述了。在安装过程中,需要注意的是设置时区、个人账户密码、root密码(一定要注意,否则后续很麻烦)、...

38790
来自专栏Java后端技术栈

使用Redis存储Nginx+Tomcat负载均衡集群的Session

环境:Cent OS 7.0(虚拟机环境)、Nginx 1.9.8、Redis 3.2.1

12320
来自专栏IT技术精选文摘

浅析Nginx的工作模式及原理

(微信公众号:IT技术精选文摘, 微信号:ITHK01, 欢迎订阅) 同Apache http server的Perfork工作模型类似,Nginx也有mast...

77270

扫码关注云+社区

领取腾讯云代金券