nginx基础配置

一、nginx常用命令

nginx -s reload:在nginx已经启动的情况下重新加载配置文件(平滑重启)

nginx -s reopen:重新打开日志文件

nginx -c /特定目录/nginx.conf:以特定目录下的配置文件启动nginx

nginx -t:检测当前配置文件是否正确

nginx -t -c /特定目录/nginx.conf:检测特定目录下的nginx配置文件是否正确

nginx -v:显示版本信息

nginx -V:显示版本信息和编译选项

二、nginx文件结构

... #main块

events { #events块
...
}

http #http块
{
  server #server块
  {
    location [PATTERN] #location块
    {
      ...
    }
  }
}

main块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
server块:配置虚拟主机的相关参数,一个http中可以有多个server。
location块:配置请求的路由,以及各种页面的处理情况。

三、常用配置指令

1.默认配置指令

worker_processes:配置nginx的工作进程数,一般设为CPU总核数或者总核数的两倍

worker_connections:配置nginx允许单个进程并发连接的最大请求数

include:用于引入配置文件

default_type:设置默认文件类型

sendfile:默认值为on,表示开启高效文件传输模式

keepalive_timeout:设置长连接超时时间,单位:秒

listen:监听端口,默认监听80端口

server_name:设置主机域名

root:设置主机站点根目录地址

index:指定默认索引文件

error_page:自定义错误页面

2.location的前缀配置

=:根据其后的指定模式进行精准匹配

~:使用正则表达式完成location的匹配,区分大小写

~*:使用正则表达式完成location的匹配,不区分大小写

^~:不使用正则表达式,完成以指定模式开头的location匹配

@:用于定义一个location块,且该块不能被外部客户端所访问,只能被nginx内部配置指令所访问

3.nginx内置变量

$args 请求中的参数;
$binary_remote_addr 远程地址的二进制表示
$body_bytes_sent 已发送的消息体字节数
$content_length HTTP请求信息里的"Content-Length"
$content_type 请求信息里的"Content-Type"
$document_root 针对当前请求的根路径设置值
$document_uri 与$uri相同
$host 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名;
$http_cookie cookie 信息
$http_referer 来源地址
$http_user_agent 客户端代理信息
$http_via 最后一个访问服务器的Ip地址
$http_x_forwarded_for 相当于网络访问路径。
$limit_rate 对连接速率的限制
$remote_addr 客户端地址
$remote_port 客户端端口号
$remote_user 客户端用户名,认证用
$request 用户请求信息
$request_body 用户请求主体
$request_body_file 发往后端的本地文件名称
$request_filename 当前请求的文件路径名
$request_method 请求的方法,比如"GET"、"POST"等
$request_uri 请求的URI,带参数
$server_addr 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费)
$server_name 请求到达的服务器名
$server_port 请求到达的服务器端口号
$server_protocol 请求的协议版本,"HTTP/1.0"或"HTTP/1.1"
$uri 请求的URI,可能和最初的值有不同,比如经过重定向之类的

四、权限控制指令

nginx中提供了两个用于配置访问权限控制的指令allow和deny。allow用于设置允许访问的权限;deny用于设置禁止访问的权限。在使用时,权限指令后只需跟上允许或禁止的IP、IP段或者all即可,其中all表示所有。

需要注意一下几点:

1.单个IP指定作用范围最小,all指定作用范围最大。

2.同一块下,若同时存在多个权限指令,则先出现的访问权限设置生效,并且会对后出现的设置进行覆盖,未覆盖的范围依然生效,否则以先出现的设置为准。

3.当多个块中都出现了权限设置指令,则内层块中的权限级别要比外层块中的设置的权限级别高。

五、nginx反向代理

反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

在nginx服务器中,反向代理的配置非常简单,最主要的指令是proxy_pass,用于设置后端服务器的地址。该地址中包括传输数据使用的协议、服务器主机名以及可选的URI资源等。

在nginx配置文件中,proxy_pass指令通常在location块中进行设置。

1.常用反向代理指令

proxy_set_header:在将客户端请求发送给后端服务器之前,更改来自客户端的请求头信息

proxy_connect_timeout:配置nginx与后端代理服务器尝试建立连接的超时时间

proxy_read_timeout:配置nginx向后端服务器组发出read请求后,等待响应的超时时间

proxy_send_timeout:配置nginx向后端服务器组发出write请求后,等待响应的超时时间

proxy_redirect:用于修改后端服务器返回的响应头中的location和Refresh

六、nginx负载均衡

负载均衡就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。

1.nginx负载均衡配置方式

轮询方式:负载均衡默认设置方式,每个请求按照时间顺序逐一分配到不同的后端服务器进行处理,如果有服务器宕机,会自动剔除

权重方式:利用weight指定轮询的权重比例,与访问率成正比,用于后端服务器性能不均的情况

ip_hash方式:每个请求按访问IP的hash结果分配,这样就可以使每个访客固定访问一个后端服务器,可以解决session共享的问题

第三方模块:第三方模块采用fair时,按照每天服务器的响应时间来分配请求,响应时间短的优先分配;若第三方模块采用url_hash时,按照访问url的hash值来分配请求

2.常用状态参数

max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream指令定义的错误

fail_timeout:在经历了max_fails次失败后,暂停服务的时间。且在实际应用中max-fails一般与fail_timeout一起使用

backup:预留的备份机器

down:表示当前的server暂时不参与负载均衡

注意:在使用ip_hash方式处理负载均衡时,web服务器在负载均衡列表中的状态不能使用weight和backup设置

七、nginx缓存配置

1.http级别的缓存配置

##cache##
#跟后端服务器连接的超时时间_发起握手等候响应超时时间
proxy_connect_timeout 500;
#连接成功后_等候后端服务器响应的时间_其实已经进入后端的排队之中等候处理
proxy_read_timeout 600;
#后端服务器数据回传时间_就是在规定时间内后端服务器必须传完所有数据
proxy_send_timeout 500;
#代理请求缓存区_这个缓存区间会保存用户的头信息以供Nginx进行规则处理_一般只要能保存下头信息即可
proxy_buffer_size 128k;
#同上 告诉Nginx保存单个用的几个Buffer最大用多大空间
proxy_buffers 4 128k;
#如果系统很忙的时候可以申请更大的proxy_buffers 官方推荐*2
proxy_busy_buffers_size 256k;
#proxy缓存临时文件的大小
proxy_temp_file_write_size 128k;
#用于指定本地目录来缓冲较大的代理请求
proxy_temp_path /usr/local/nginx/temp;
#设置web缓存区名为cache_one,内存缓存空间大小为12000M,自动清除超过15天没有被访问过的缓存数据,硬盘缓存空间大小200g;levels=1:2代表缓存的目录结构为2级目录
proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;

2.在访问静态文件的location上添加缓存

#静态数据保存时效
location ~ \.html$ {
proxy_pass http://source.qingk.cn;
proxy_redirect off;
proxy_cache cache_one;
#此处的cache_one必须于上一步配置的缓存区域名称相同
proxy_cache_valid 200 304 12h;
proxy_cache_valid 301 302 1d;
proxy_cache_valid any 1m;
#不同的请求设置不同的缓存时效
proxy_cache_key $uri$is_args$args;
#生产缓存文件的key,通过4个string变量结合生成
expires 30d;
#其余类型的缓存时效为30天
proxy_set_header X-Forwarded-Proto $scheme;
}

3.清除缓存

该功能可以采用第三方模块ngx_cache_purge实现,需要安装该模块
缓存文件是根据proxy_cache_key这个指令生成的,所以找到对应的缓存文件,删除即可
location ~ /purge(/.*) {
#删除指定缓存区域cache_one的特定缓存文件$1$is_args$args
proxy_cache_purge cache_one $1$is_args$args;
#运行本机和10.0.0.1网段的机器访问,拒绝其它所有
allow 127.0.0.1;
allow 10.0.0.1/24;
deny all;
}

nginx学习笔记2的更多相关文章

  1. Nginx学习笔记4 源码分析

    Nginx学习笔记(四) 源码分析 源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_ ...

  2. Nginx学习笔记~目录索引

    回到占占推荐博客索引 前几天整理了<Docker的学习笔记索引>,受到了很多朋友的关注,今天把Nginx的文章也整理一下,以后将永久更新,像大叔之前的<EF文章系列>,< ...

  3. nginx 学习笔记(2) nginx新手入门

    这篇手册简单介绍了nginx,并提供了一些可以操作的简单的工作.前提是nginx已经被安装到你的服务器上.如果没有安装,请阅读上篇:nginx 学习笔记(1) nginx安装.这篇手册主要内容:1. ...

  4. Nginx学习笔记之加强篇

    在上一篇文章Nginx学习笔记之应用篇中,我们已经可以正式运行自己的网站了.但是在使用Nginx服务器时还需要注意几个问题: 1.Nginx服务器上配置的单个站点的并发量不超过1024 2.Nginx ...

  5. Nginx学习笔记之应用篇

    Nginx服务器的安装请参考Nginx学习笔记之安装篇 关于Nginx配置文档的API在这里就不一一列出,现在我们来配置第一个Nginx架构实现负载均衡的网站. 1.打开IIS,配置如下站点 重复上述 ...

  6. Nginx 学习笔记之安装篇

    在windows下安装Nginx其实非常简单,只需如下几个步骤: 1. 在Nginx官网下载相应版本的安装程序,上面有最新版.稳定版等各种版本,正式运营的项目建议下载最新的稳定版 2.将下载后的压缩包 ...

  7. nginx学习笔记(一)

    agentzh 的 Nginx 教程 学习笔记 nginx的变量 Nginx 变量一旦创建,其变量名的可见范围就是整个 Nginx 配置,甚至可以跨越不同虚拟主机的 server 配置块, 例子如下 ...

  8. Nginx学习笔记(六) 源码分析&启动过程

    Nginx的启动过程 主要介绍Nginx的启动过程,可以在/core/nginx.c中找到Nginx的主函数main(),那么就从这里开始分析Nginx的启动过程. 涉及到的基本函数 源码: /* * ...

  9. Nginx学习笔记(三) Nginx基本数据结构

    Nginx基本数据结构 话说学习一种编程语言,例如C语言,我们首先学的也是数据结构,这是以后开发程序的关键.为了更好更方便的开发Nginx,Nginx自己实现了很多适合nginx的数据结构. Ngin ...

  10. 【转】Nginx 学习笔记(十一)nginx下安装配置naxsi waf防火墙(附完整编译、配置)

    原文地址:http://f2ex.cn/nginx-installed-configuration-naxsi-waf/ Naxsi 是第三方 nginx 模块 ,它和 Modsecurity 都是开 ...

随机推荐

  1. Golang Testing单元测试指南

    基础 可以通过 go test -h 查看帮助信息. 其基本形式是: go test [build/test flags] [packages] [build/test flags & tes ...

  2. [笔记] Git 冲突处理

    这是一篇关于 git 解冲突的笔记,没有什么干货. TortoiseGit 小乌龟 通常情况下,会比较喜欢使用小乌龟解冲突,详见:git 使用 tortoisegit 解冲突 但部分复杂的场景,反而需 ...

  3. 基于Spring Cloud Netflix的TCC柔性事务和EDA事件驱动示例

    Solar Spring Cloud为开发者提供了快速构建分布式系统中的一些常见工具,如分布式配置中心,服务发现与注册中心,智能路由,服务熔断及降级,消息总线,分布式追踪的解决方案等. 本次实战以模拟 ...

  4. 使用 docker-compose 运行 MySQL

    使用 docker-compose 运行 MySQL 目录结构 . │ .env │ docker-compose.yml │ └─mysql ├─config │ my.cnf │ └─data m ...

  5. SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错

    SAP S4HANA 账户组的配置里'Int.Std.Grping'选项没勾选导致ABAP程序报错 BP,试图创建一个新的vendor code, 角色是ZGM001, Grouping是G001, ...

  6. swift(二)swift字符串和字符和逻辑运算

    /* 1.swift字符串和字符 2.构造字符串 3.字符串比较 4.数值运算 5.复制运算 6.关系运算 7.逻辑运算 8.区间运算 */ /* //数据 + 数据的处理 //字符信息+ 字符信息的 ...

  7. python+openpyxl的excel的相关读写

    def test(): wb2 = openpyxl.Workbook() #创建一个excel对象 wb2.save("a.xlsx") #保存excel并命名为a.xlsx w ...

  8. JS高阶---继承模式(借用构造函数继承+组合继承)

    (1)借用构造函数继承 案例如下: 验证: (2)组合继承 案例如下: 验证如下: 结果如右图所示 . .

  9. idea快捷键的使用

    IntelliJ IDEA 问题解决:1.乱码,主要是快捷键的字样显示乱码 中文字体显示乱码? 2.菜单项等的字体太小,怎么能设置下? -------------------------------- ...

  10. DNS解惑之基本概念(1)

    常见问题 1.域名对应的IP地址修改完要将近一天的时间才能有效果? DNS的数据库通常是在跑在DNS服务器的内存当中的,但是我们如果临时增加一条的话其实是写到了硬盘当中,当数据库服务刷新的时候新增的新 ...