第2章 Nginx服务器的安装部署(2.3 基础配置指令)

  1. nginx.conf文件的结构

    1. 全局块

    2. events块

    3. http块

      1. http全局块

      2. server块(一个或多个)

        1. server全局块

        2. location块(一个或多个)

  2. 各个块的作用:

    1. 全局块:

      1. 位置:配置文件开头到events块之间的内容。

      2. 作用范围:Nginx服务器全局。

      3. 内容:

        1. Nginx服务器的用户(组)。

        2. 允许生成的worker process数。

        3. Nginx进程PID的存放路径。

        4. 日志的存放路劲和类型。

        5. 配置文件引入等。

    2. events块:

      1. 作用范围:主要影响Nginx服务器与用户的网络连接。

      2. 内容:

        1. 是否开启对worker process下的网络连接进行序列化。

        2. 是否允许同时接收多个网络连接。

        3. 事件驱动模型的选取。

        4. 每个worker process进程的最大连接数。

      3. 注意:该部分对Nginx服务器的性能影响较大。

    3. http块:

      1. http全局块内容:

        1. 文件引入。

        2. MIME-Type定义。

        3. 日志定义。

        4. 是否使用sendfile传输文件。

        5. 连接超时时间。

        6. 单连接请求数上限等。

    4. server块:

      1. 虚拟主机:

        1. 为充分利用硬件资源,Nginx服务器在同一台服务器上只运行一组Nginx进程,就可以运行多个网站。

        2. 每个server块相当于一台虚拟主机。

      2. server全局块内容:

        1. 本虚拟主机的监听端口。

        2. 本虚拟主机的名称或IP等。

    5. location块

      1. 内容:

        1. 基于Nginx服务器接收到的请求字符串(server_name/uri_string,主要为uri_string部分)进行匹配,对特定的请求进行处理。

        2. 地址定向。

        3. 数据缓存。

        4. 应答控制。

        5. 第三方模块的配置等。

  3. 基础配置指令:

    1. 配置运行Nginx服务器的用户(组):

      1. 指令:user user [group];

      2. 作用:

        1. 只有设置的用户或用户组成员才有权限启动Nginx进程。

        2. 配置为nobody或不配置时,表示所有用户都可以启动Nginx进程。

      3. 默认值:nobody。

      4. 生效位置:全局块。

    2. 配置允许生成的worker process数:

      1. 指令:worker_process NUM | auto;

      2. 通常配置值:服务器的cpu核心数。

      3. 生效位置:全局块。

    3. 配置Nginx进程PID存放路径:

      1. 指令:pid FILENAME;

      2. 默认值:logs/nginx.pid。

      3. 生效位置:全局块。

    4. 配置错误日志存放路径:

      1. 指令:error_log FILENAME | stderr [debug | info | notice | warn | error | crit | alert | emerg];

      2. 默认值:error_log logs/error.log error;

      3. 生效位置:全局块、http块、server块、location块。

    5. 配置文件的引入:

      1. 指令:include FILENAME;

      2. 生效位置:全局块、http块、server块、location块。

    6. 设置网络连接的序列化:

      1. 指令:accept_mutex on | off;

      2. 作用:防止某一连接到来时,多个Nginx进程争抢,影响系统性能。

      3. 默认值:on。

      4. 生效位置:events块。

    7. 设置是否允许同时接收多个网络连接:

      1. 指令:multi_accept on | off;

      2. 作用:

        1. on: 每个worker process进程可以同时接收多个新到达的网络连接。

        2. off:每个worker process进程一次只能接收一个新到达的网络连接。

      3. 默认值:off。

      4. 生效位置:events块。

      5. 疑问:与下文worker_connections的关系。

        1. multi_accept针对新连接;worker_connections针对已连接。

    8. 事件驱动模型的选择:

      1. 指令:use select | poll | epoll | kqueue | rtsig | /dev/poll | eventport。

      2. 生效位置:events块。

    9. 配置最大连接数:

      1. 指令:worker_connections NUM;

      2. 作用:配置允许每个worker process同时开启的最大连接数。

      3. 默认值:512.

      4. 生效位置:events块。

    10. 定义MIME-Type

      1. 定义:

        1. MIME-Type是网络资源的媒体类型,如HTML, XML, GIF及Flash等。

        2. 浏览器和服务器都需要能够识别这些资源类型。

        3. mime.types文件的第一列为资源类型,第二列为相关类型的文件后缀名。

      2. 指令:

        1. default_type MIME_Type;

      3. 默认值:text/plain。

      4. 生效位置:http块、server块、location块。

    11. 自定义服务日志:

      1. 日志作用:记录Nginx服务器应答前端请求的日志。

      2. log_format指令:

        1. 指令:log_format FORMAT_NAME string...

          1. FORMAT_NAME: 日志格式的名称。

          2. string: 使用nginx内置变量定义的格式字符串。

        2. 生效位置:http块。

      3. access_log指令:

        1. 指令:access_log FILENAME [format [buffer=size]]

          1. FILENAME: 服务日志的存放路径。

          2. format: log_format定义的日志格式的名称。

          3. buffer: 临时存放日志的内存缓冲区大小。

        2. 默认值:access_log logs/access.log combined;

        3. 取消服务日志记录功能:access_log off;

        4. 生效位置:http块、server块、location块。

    12. 配置允许sendfile方式传输文件:

      1. 疑问:sendfile方式是一种什么样的方式?

      2. sendfile指令:

        1. 指令:sendfile on | off;

        2. 作用:开启或关闭使用sendfile()传输文件。

        3. 默认值:off。

        4. 生效位置:http块、server块、location块。

      3. sendfile_max_chunk指令:

        1. 指令:sendfile_max_chunk size;

        2. 作用:每个worker process进程每次调用sendfile()传输数据量的最大值。

        3. 默认值:0,表示无限制。

        4. 生效位置:http块、server块、location块。

        5. 示例:sendfile_max_chunk 128k;

    13. 配置连接超时时间:

      1. 指令:keepalive_timeout timeout [header_timeout];

        1. timeout: 服务器端对连接的保持时间。默认值75秒。

        2. header_timeout: 应答报文头部字段Keep-Alive的配置值:“Keep-Alive:timeout=header_timeout”。

      2. 示例:keepalive_timeout 120s 100s;

      3. 生效位置:http块,server块,location块。

    14. 单连接请求数上限:

      1. 指令:keepalive_requests NUM;

      2. 默认值:100.

      3. 作用:限制用户通过某一连接向Nginx服务器发送请求的次数。

    15. 配置网络监听:

      1. 指令:listen ...;

      2. 示例:

        1. listen *:80 | *:8080;

        2. listen 10.10.168.251:8080;

        3. listen 10.10.168.251;

        4. listen 8080;

      3. 生效位置:一般用于server块。

    16. 基于名称的虚拟主机设置:

      1. 指令:server_name name_string;

        1. name_string: Nginx对外提供的虚拟主机的名称。

      2. 前提:设置好主机的名称,并配置好DNS。???

        1. 实测在ubuntu14.04 /etc/hosts文件中,增加ip和主机名的映射关系后即可。原因:linux系统再向DNS服务器发出域名解析请求之前,会首先查询/etc/hosts文件,如果里面有相应的记录,就回使用/etc/hosts里面的记录。

      3. 说明:虚拟主机名支持通配符和正则表达式。

      4. 选取虚拟主机的优先级:

        1. 说明:由于允许使用通配符和正则表达式,所以可能出现一个虚拟主机名对应多个虚拟主机。

        2. 优先级:

          1. 准确匹配的server_name;

          2. 通配符在开始时匹配server_name成功。

          3. 通配符在结尾时匹配server_name成功。

          4. 正则表达式匹配server_name成功。

      5. 生效位置:server块。

    17. 基于IP的虚拟主机配置:

      1. 指令:server_name IP;

        1. IP: 服务器上需要已经配置了该ip地址。

      2. 生效位置:server块。

    18. 配置location块:

      1. 指令:location [=|~|~*|^~] uri {...}

      2. 说明:

        1. [...]的部分是可选项,不输入该部分时,用来改变请求字符串与uri的匹配方式。

        2. 下文中将uri分为:标准uri(不含正则)和正则uri(含正则)。

      3. 不使用[...]时,Nginx服务器如何在server块中搜索并使用多个location块的uri和请求字符串匹配的:

        1. 在多个location块中搜索标准uri与请求字符串匹配度最高的一个,并记录。

        2. 在多个location块中搜索正则uri与请求字符串是否有匹配的:

          1. 如果有,则使用该location块处理此请求;

          2. 否则,使用匹配度最高的标准uri的location块进行处理。

      4. [...]4个选项的含义:

        1. = : 请求字符串与标准uri严格匹配,如果匹配成功则使用该location处理此请求。

        2. ~   : 表示uri包含正则表达式,并区分大小写。

        3. ~* : 表示uri包含正则表达式,并不区分大小写。

          1. 说明:如果uri包含正则,则必须使用~或~*标识。

        4. ^~: 搜索标准uri与请求字符串匹配度最高的一个,并使用该location块处理此请求。

          1. 说明:该种形式下,会对uri中的空格,问号等符号进行url编码。

      5. 生效位置:server块。

    19. 配置请求的根目录:

      1. 指令:root path;

      2. 示例:

        • location /data/

        • {

          • root /locationtest1

        • }

        • 说明:当location块接收到/data/index.html的请求时,将在/locationtest1/data/目录下找到index.html文件来响应请求。

      3. 生效位置:http块,server块,location。通常在location块下配置。

    20. 更改location的uri:

      1. 指令:alias path;

      2. 示例:

        • location ~ ^/data/(.+\.(htm|html))$

        • {

          • alias /locationtest1/other/$1

        • }

        • 说明:当location块接收到/data/index.html的请求时,将在/locationtest1/other/目录下找到index.html文件来响应请求。此时原uri中的/data/已经没有用处了。

        • 疑问:如果与root指令一起使用呢??

      3. 生效位置:location块。

    21. 设置网站的默认首页:

      1. 指令:index file;

      2. 作用:请求地址中,可以不写首页名称。

      3. 示例:

        1. location ~ /data/(.+)/web/$

        2. {

          1. index index.$1.html index.my1.html index.html

        3. }

        4. 说明:当location块接收到/data/locationtest/web/的请求时,将在/data/locationtest/web/目录下依次查找index.locationtest.html index.my1.html index.html文件,首先找到哪个文件,就用哪个文件响应请求。

      4. 生效位置:location块。

    22. 设置网站的错误页面:

      1. http响应:

        1. 通常表示:

          1. 2xx:请求成功。

          2. 3xx:网站重定向。

          3. 4xx:客户端端错误。

          4. 5xx:服务器端错误。

        2. 常见的http错误:

      2. 指令:error_page code [=response] uri

        1. code: http错误代码。

        2. response: 可选项,将code指定的错误代码转化为新的错误代码response,返回给客户端。

        3. uri:

          1. 错误页面的路径。相对于Nginx安装路径下html/目录的相对目录。

          2. 网址。

      3. 生效位置:http块,server块,location块。

    23. 基于IP配置Nginx的访问权限:

      1. allow指令:

        1. 指令:allow address | CIRD | all;

          1. address: 允许访问的客户端的ip。

          2. CIDR: 允许访问的客户端的CIDR地址。

          3. all: 允许所有客户端访问。

      2. deny指令:

        1. 指令:deny address | CIRD | all;

          1. address: 禁止访问的客户端的ip。

          2. CIDR: 禁止访问的客户端的CIDR地址。

          3. all: 禁止所有客户端访问。

      3. 示例:

        • location / 

        • {

          • deny 192.168.1.1

          • allow 192.168.1.0/24

          • deny all;

        • }

        • 说明:

          • 禁止192.168.1.1访问Nginx;

          • 允许192.168.1.0网段(除192.168.1.1)访问Nginx;

          • 禁止其余所有ip访问Nginx;

      4. 生效位置:http块,server块,location块。

    24. 基于密码配置Nginx的访问权限:

      1. auth_basic指令:

        1. 指令:auth_basic string | off;

          1. string:开启认证功能,并配置验证时的提示信息。

          2. off:关闭认证功能。

      2. auth_basic_user_file指令:

        1. 指令:auth_basic_user_file file;

          1. file:密码文件中绝对路径。

        2. 功能:设置包含用户名和密码信息的文件路径。

        3. file文件说明:

          1. 示例:name1:password1

          2. 密码可以为明文,也可以为密文。

          3. 密文可有crypt()函数加密。

          4. 在linux平台可以使用htpasswd命令生成。

            1. 示例:htpasswd -c -d /nginx/conf/pass_file username

            2. 说明:该命令在apache的安装目录下有。

      3. 生效位置:http块,server块,location块。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值