nginx--基础配置语法

查看/etc/nginx/nginx.conf文件:

user  nginx;

worker_processes  1;

 

error_log  /var/log/nginx/error.log warn;

pid        /var/run/nginx.pid;

 

 

events {

    worker_connections  1024;

}

 

 

http {

    include       /etc/nginx/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_forwarded_for"';

 

    access_log  /var/log/nginx/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on;

 

    keepalive_timeout  65;

 

    #gzip  on;

 

    include /etc/nginx/conf.d/*.conf;

}

 

 include /etc/nginx/conf.d/*.conf:包含了/etc/nginx/conf.d文件夹下的所有配置,即会先读取nginx.conf文件,再去读被包含的文件。

 

Nginx配置文件有三大块的内容,其中前面的一块是一个全局配置,配置有nginx服务的系统使用用户、工作进程数等。

 nginx--基础配置语法_第1张图片

user:可以设置为其他用户

work_processes:跟nginx的多进程的方式有关系,该数量一般与cpu保持一致。

 

events模块:

 

该模块是事件模块,可以在该部分设置使用内核模型,比如epoll等。

worker_connections:需要根据实际情况调整。

use:可以设置nginx使用哪种内核模型。

 

http模块:

 nginx--基础配置语法_第2张图片

按照层级来划分,http是最外一层。所有的http可以包含多个http的服务。一个server可以配置一个独立的站点,在每一个server里配置其当前的属性,主要配置其监听端口,服务名。location主要控制着我们每一层路径的访问。

 

Nginx参数配置:

日志配置:

 nginx--基础配置语法_第3张图片

log_format只能配置在http节点下。

 

error_log  /var/log/nginx/error.log warn;表示error.log文件位置及日志级别。

 

此处的main就是log_format的name

后续的例如$remote_addr是nginx的变量,它们通过一定的符号连接在一起,组成一定的日志格式,然后打入到access.log里面。

 

Nginx变量:

 nginx--基础配置语法_第4张图片

 

Nginx模块:

分为nginx官方模块和第三方模块。

官方模块:

stub_status_module:

 nginx--基础配置语法_第5张图片

该模块主要用于展示nginx当前处理连接的状态,用于我们监控nginx当前连接的信息。

配置语法:

 nginx--基础配置语法_第6张图片

示例配置:

 nginx--基础配置语法_第7张图片

 

访问后:

 nginx--基础配置语法_第8张图片

其中active connections为nginx当前活跃的连接数

server accepts handled requests下展示三个数分别为接受的握手总次数,处理的连接数,总的请求数,正常情况下握手总次数等于处理的连接数是相等的表示没有丢失。

Reading表示正在读的个数。Writing表示正在往nginx写的个数。Waiting

表示等待次数。该数主要是nginx开启keep-alive也就是长连接的情况下,客户端表示的是客户端和服务端在空闲的等待既没有读也没有写但是建立连接的数量。

 

http_random_index_module:

 nginx--基础配置语法_第9张图片

该模块主要在它的主目录里随机的选择一个文件作为它的默认随机主页。

配置语法:

 nginx--基础配置语法_第10张图片

配置示例:

 nginx--基础配置语法_第11张图片

 

http_sub_module:

 nginx--基础配置语法_第12张图片

用于nginx服务端在给客户端response的http内容的时候,用于对http的内容进行替换。

配置语法:

 nginx--基础配置语法_第13张图片

 

nginx--基础配置语法_第14张图片

效验服务端文件是否有更新,有更新返回给客户最新的文件。

 nginx--基础配置语法_第15张图片

为on时,替换指定http内容的第一个。反之为全部。

配置示例:

 nginx--基础配置语法_第16张图片

Nginx请求限制:

nginx--基础配置语法_第17张图片

http协议的请求与连接

 nginx--基础配置语法_第18张图片

http协议是建立在tcp协议上,要完成一次http请求需要先进行tcp的三次握手,建立tcp连接。建立完成后才会进行http的请求和响应。最后通过服务端和客户端不断发送FIN和ACK包来保持连接的状态。也就是我们所说的长链接和keep-alive。通过上图可以看出连接是建立在http请求的基础之上。

 nginx--基础配置语法_第19张图片

在http1.0的版本里,tcp是不能复用的也就是客户端向服务端发送请求后,服务端在对应的时间里就会断开。一次连接就对应一次请求。在1.1版本里,一个连接就会被顺序性的被复用而发起多次的顺序性的http请求。2.0后就可以多路复用。

 nginx--基础配置语法_第20张图片

 

连接限制配置语法:

nginx--基础配置语法_第21张图片

 

请求限制配置语法:

 nginx--基础配置语法_第22张图片

 

配置示例:

 nginx--基础配置语法_第23张图片

 

Nginx访问控制:

 nginx--基础配置语法_第24张图片

 

http_access_module配置语法:

 nginx--基础配置语法_第25张图片

Address为ip,CIDR为网段 all全部,unix为socket连接。

配置示例:

 nginx--基础配置语法_第26张图片

 

访问控制原理:

 nginx--基础配置语法_第27张图片

局限性:Nginx访问控制是基于客户端的ip来实现的,但是对于nginx来说,它不认为哪一个是客户端,如果我们的服务端不是客户端与服务端直接连接,而是通过了一层代理来访问,那么实际服务端获取的IP为IP2,而实际上我们想要拦截的IP1。

解决方法:

 nginx--基础配置语法_第28张图片

通过使用x_forwarded_for解决,它是通过一连串的ip组成的信息。

 nginx--基础配置语法_第29张图片

 

几种常用的解决方式:

 nginx--基础配置语法_第30张图片

 

认证登录模块:

 nginx--基础配置语法_第31张图片

 

配置示例:

 nginx--基础配置语法_第32张图片

局限性:

 nginx--基础配置语法_第33张图片

 

解决方案:

 nginx--基础配置语法_第34张图片

你可能感兴趣的:(Nginx)