nginx基础入门

本文介绍了Nginx作为动态代理的工作原理,它接收客户端请求并修改header,然后转发给web server,等待响应后再将处理过的回复发送给客户端。通过upstream模块,Nginx可以管理一组web server,根据location规则选择合适的目标。
摘要由CSDN通过智能技术生成
nginx基础入门
一、什么是nginx?
Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 Nginx是目前比较主流的HTTP反向代理服务器(其企业版提供了基于TCP层的反向代理插件),对于构建大型分布式web应用,具有举足轻重的作用。简单来说,nginx有2个主要的功能:动/静态资源分离、负载均衡。
1、动/静态资源分离:nginx支持正则表达式以区分静态资源或者动态资源,其中动态资源可以进一步转发给后端的代理 server,而静态资源则可以在nginx层面使用本地缓存策略或者重定向(类CDN)到其他nginx上。
2、负载均衡:对于动态资源而言,如果有多个代理 server,那么nginx将会根据一定的算法选择合适的server,并转发请求,最终将客户端request相对均衡的分发给多个server。
Nginx作为“单点”,面向客户端请求,并将请求转发给后端的某个server,因为server可以有多个,那么从整体而言,提升了站点的“资源整合”能力,提升了站点的整体吞吐能力;但因为受限于nginx本身的IO模型,并没有“降低”对物理资源的消耗(即性能开支);通常nginx作为整个站点的“避雷针”和导流通道,它应该被架设在物理资源较为优越的机器上,比如8U物理机,32核心,64G内存,对磁盘要求相对较低,对CPU、内存、网卡带宽有较高的要求,因为nginx不仅需要和客户端请求建立链接,而且还需要与后端proxy server建立链接并且负责流量输入、输出(这和LVS、Haproxy有本质区别),这种双倍的链接建立,就要求机器具有较高的内存和CPU,如果你的nginx还有大量的“静态资源”cache,还需要使用高速、高容量的磁盘。因为nginx节点最终为所有proxy server流量的总和,那么它应该具有更高的网卡带宽。
为了避免资源竞争,应该避免nginx和web server部署在同一个节点上,因为web server通常为CPU和内存高耗型,这会大大降低nginx的代理能力。
1) 在中小型应用中(PV在KW级别,单一垂直web应用),通常一个nginx代理多个(组)server即可。
2)对于大中型应用,一个nginx将无法支撑全部的流量,我们将会采用多个nginx代理,并在nginx前端继续构建高性能的分流设备,比如LVS、Haproxy等更低层的软/硬件负载均衡器,这种负载均衡器通常只是“转发”,而不涉及到流量的输出,所以转发效率将会更高,承载能力更强。
3)无论何时,我们也不希望nginx存在单点故障问题,那么通常我们还需要使用keepalived(其他同类型技术,VIP)来提高nginx节点的可用性,即Master-backup模式。
4)当有多个nginx时,为了提升后端server的代理能力,通常还会让多个nginx之间交叉重叠代理后端的server。


二、什么是反向代理?
首先,我们常说的代理实际上是正向代理,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。科学上网工具 Shadowsocks 扮演的就是典型的正向代理角色。在国内用浏览器访问 www.google.com 时会被无情的墙掉,要想冲破这堵墙,你可以在国外用 Shadowsocks 来搭建一台代理服务器,让代理帮我们去请求 www.google.com,代理再把请求响应结果再返回给我。
反向代理方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。反向代理隐藏了真实的服务端,当我们访问 www.baidu.com 的时候,背后可能有成千上万台服务器为我们服务。但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了。www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到提供真实计算的服务器那里去。Nginx 就是性能非常好的反向代理服务器,它可以用来做负载均衡。


三、nginx的安装与常用命令
1、安装
在nginx官网下载。发布版本分为Linux和windows版本。也可以下载源码,编译后运行。
这里只介绍Windows版本下的安装
为了安装Nginx/Win32,需先下载它。然后解压之,然后运行即可。下面以C盘根目录为例说明下:
cd C:
cd C:\nginx-0.8.54   start nginx
Nginx/Win32是运行在一个控制台程序,而非windows服务方式的。
2、常用命令
nginx的使用比较简单,就是几条命令。
常用到的命令如下:
nginx -s stop       快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit       平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload     因改变了Nginx相关配置,需要重新加载配置而重载。
nginx -s reopen     重新打开日志文件。
nginx -c filename   为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t            不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v            显示 nginx 的版本。
nginx -V            显示 nginx 的版本,编译器版本和配置参数。


四、nginx常用配置详解
首先来看一个常规配置样例:
#user  nobody;  
worker_processes  2;  
worker_rlimit_core 256m;  
worker_rlimit_nofile 65535;  
  
error_log  logs/error.log  info;  
  
#pid        logs/nginx.pid;  
  
daemon on;  
worker_priority 0;  
  
events {  
    #use epoll;  
    use kqueue;#linux 请使用epoll  
    accept_mutex on;  
    accept_mutex_delay 500ms;  
    worker_connections  65535;  
}  
  
  
http {  
    include       mime.types;  
    default_type  application/octet-stream;  
  
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '  
                      '$status $body_bytes_sent "$http_referer" '  
                      '"$http_user_agent" "$http_x_forwar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值