linux笔记之Nginx配置文件详解

以下通过介绍常用模块来讲解Nginx配置文件指令(以下内容都是参照官方网站)

1、Nginx的主模块的常用配置指令:

(1)error_log

语法:error_log  file  [debug | info | notice | wran | error | crit ]

默认值:${prefix}/logs/error.log

指定Nginx服务(与FastCGI)错误日志文件位置。

每个字段的错误日志等级默认值:main字段:error     HTTP字段:crit       server字段:crit 

(2)include

语法:include  file |*

默认值:none

可以包含一些其他的配置文件来完成你想要的功能。

实例: include   conf.d/*.conf




2、Nginx的http核心模块的常用配置指令

(1)alias

语法:alias  file-path | directory-path

默认值:no

使用字段:location

这个指令就是将RUL映射成文件系统路径;具体的映射规则如下:

location   /i/  {

       alias   /spool/w3/images/;

}

上例中,如果客户端请求"/i/top.gif“这个文件,返回的是:"/spool/w3/images/top.gif"。

(2)listen

语法:listen  address:port  [default_server  [backlog=num  |rcvbuf=size |  sndbuf=size |  accept_filter=filter  |  deferred | bind  | ssl]]

默认值:listen  80

使用字段:server

listen指令指定了server {....}  字段中可以被访问到的ip地址及端口号,可以只指定一个ip,一个端口,或者一个可解析的服务器名。

(3)location

语法:location  【=|~|~*|^~|@】  /uri/  {......}

默认值:no

使用字段:server

这个参数根据不同的需求来进行配置,可以使用字符串与正则表达式匹配,如果要使用则正表达式,你必须指定下列前缀:~*不区分大小写、~区分大小写

各种查询方式的总结:

1、前缀"="表示精确匹配查询,如果找到,立即停止查询。

2、指令任然使用标准字符串,如果匹配使用"^~"前缀,停止查询

3、正则表达式按照他们配置文件中定义的顺序。

如果第三方产生一个匹配,这个匹配将被使用,否则将使用第二条的匹配。

实例:location = / {

#只匹配/的查询

【configuration  A】

}

Location   /   {

#匹配任何以 / 开头的查询,但是正则表达式与一些较长的字符串将被首先匹配

}

location ^~/images/ {

#匹配任何以/images/开始的查询并且停止搜索,不检查正则表达式

【configuration  C】

}

location  ~*  \.  (gif | jpg | jpeg $ {

#匹配任何以gif,jpg  or   jpeg结尾的文件,但是所有/images/目录的请求将在Configuration C中处理

}

各请求的处理如下例:

/   请求的是       configuration  A 

/documents/document.html   请求的是   configuration B 

/images/1.gif   请求的是    configuration C 

/documents/1.jpg  请求的是   configuration D 

(4)root

语法:root  path

默认值:root  html

使用字段:http,server,location,location中的if字段

设置请求达到后的文件根目录

下例中:

location   /i/  {

root   /spool/w3;

}

如果请求"/i/top.gif"文件,nginx将转到"/spool/w3/i/top.gif"文件。

(5)server

语法:server {.....}

默认值:no

使用字段:http

server字段包含虚拟主机的配置。没有明确的机制来分开基于域名(请求中的主机头)和基于IP的虚拟主机。可以通过listen指令来指定必须连接到这个server块的所有地址和端口,并且在server_name指令中可以指定所有的域名。

(6)server_name

语法:server_name   name  [.......]

默认值:server_name   hostname

使用字段:server

这个指令有两个作用:
·将HTTP请求的主机头与在nginx配置文件中的server{...}字段中指定的参数进行匹配,并且找出第一个匹配结果。这就是如何定义虚拟主机的方法,域名遵循下述优先级规则:
1、完整匹配的名称。
2、名称开始于一个文件通配符:*.example.com。
3、名称结束于一个文件通配符:www.example.*。
4、使用正则表达式的名称。
如果没有匹配的结果,nginx配置文件将安装以下优先级使用[#server server { ... }]字段:
1、listen指令被标记为default的server字段。
2、第一个出现listen(或者默认的listen 80)的server字段。
·如果server_name_in_redirect被设置,这个指令将用于设置HTTP重定向的服务器名。



3、Nginx的http访问控制模块的常用配置指令

(1)allow

语法:allow  【address  | CIDR | all 】

默认值:no

使用字段:http,server,location,limit_except

指令指定了允许访问的IP或网络断

(2)deny

语法:deny  【address | CIDR | all 】

默认值:no

使用字段:http,server,location,limit_except

指令指定了拒绝访问的IP或网络段。

例:

error_page  403  http://example.com/forbidden.html;

location  /  {

   deny   192.168.1.1;

   allow  192.168.1.0/24;

   allow   10.1.1.0/16;

   deny   all;

}




4、Nginx的http访问控制模块的常用配置指令

(1)auth_basic  

语法:auth_basic   【text|off】

默认值:auth_basic    off

使用字段:http,server,location,limit_except

指令包括一个具有测试用户名和密码的HTTP基本认证,指定的参数将用于认证域。如果将值设置为"off"则忽略下级继承的动作。

(2)auth_basic_user_file

语法:auth_basic_user_file    the_file

默认值:no

使用字段:http,server,location,limit_except

location   /  {

auth_basic    "Restricted";

        auth_basic_user_file     conf/htpassed;

}



5、Nginx的http目录清单生成模块的常用配置指令

(1)autoindex

语法:autoindex   【on  | off】

默认值:autoindex   off

使用字段:http,server,location

是否使用自动目录列表



6、URL重写模块(Rewrite)的常用配置指令

(1)rewrite

语法:rewrite  regex  replacement  flag

默认值:none

使用字段:server,location,if

按照相关的正则表达式与字符串修改URI,指令按照在配置文件中出现的顺序执行。注意重写规则只匹配相对路径而不是绝对的URL,如果先匹配主机名,可以加一个if判断

例:

if  ($host  ~*  www\. (.*)){

    set   $host_without_www $1

    rewrite  ^(.*)$ http://$host_without_www$1  permanent ;# $1为"/foo",而不是"www.mydomain.com/foo"

}

可以在重写指令后面添加标记。
如果替换的字符串以http://开头,请求将被重定向,并且不再执行多余的rewrite指令。
标记可以是以下的值:

·last - 完成重写指令,之后搜索相应的URI或location。
·break - 完成重写指令。
·redirect - 返回302临时重定向,如果替换字段用http://开头则被使用。
·permanent - 返回301永久重定向。


7、SSL模块(SSL)常用配置指令
下面是一个SSL的示例配置,为了减少CPU负载,可以将其指到一个工作进程,并且启用keepalive

worker_processes 1;

http {

    server {

        listen        443;

        ssl             on;

        ssl_certificate             /usr/local/nginx/conf/cert.pem;

        ssl_certificate_key      /usr/local/nginx/conf/cert.key;

         keepalive_timeout     70;

    }

}

(1)ssl

语法:ssl   【on  | off 】

默认值:ssl    off

使用字段:mian ,server

开启HTTPS

(2)ssl_certificate

语法:ssl_certificate     file

默认值:ssl_certificate    cert.pem

使用字段:main,server

为这个虚拟主机指定PEM格式的证书文件

(3)ssl_certificate_key

语法:ssl_certificate_key  file

默认值:ssl_certificate_key  cert.pem

使用字段:main,server

为这个虚拟主机指定PEM格式的秘钥



配置文件大致讲解完毕(接下来是三种虚拟主机的配置)
时间: 2024-08-11 09:47:33

linux笔记之Nginx配置文件详解的相关文章

【Nginx笔记】nginx配置文件详解

本文主要对nginx的配置做重点说明,关于nginx的其它基本概念,建议参考官网描述,这里推荐Nginx Beginner's Guide这篇文档,对初学者快速认识nginx很有帮助. 显然,发挥nginx强大优势的前提是熟悉其配置文件并进行合理的配置,而学习nginx配置时,最重要的一点是建立如下概念: The most important is that nginx is a reverse proxy first and HTTP server second, its first conc

nginx配置文件详解笔记

web运维第一篇:nginx配置文件详解笔记#定义Nginx运行的用户和用户组user www www;#nginx进程数,建议设置为等于CPU总核心数.worker_processes 8;#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]error_log /var/log/nginx/error.log info;#进程文件pid /var/run/nginx.pid;#一个nginx进程打开的最多文件描述符数目,理论值应

Nginx 配置文件详解

Nginx 配置文件详解 user nginx ; #用户 worker_processes 8; #工作进程,根据硬件调整,大于等于cpu核数 error_log logs/nginx_error.log crit; #错误日志 pid logs/nginx.pid; #pid放置的位置 worker_rlimit_nofile 204800; #指定进程可以打开的最大描述符 这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文 件数(ulimit -n)与ngin

RHEL7下Nginx配置文件详解(二)

RHEL7下Nginx配置文件详解 全局配置 #user  nobody nobody;//指定Nginx进程运行用户以及用户组. worker_processes  1;//开启的进程数. #error_log  logs/error.log;//定义全局错误日志 #error_log  logs/error.log  notice; //定义全局错误日志 #error_log  logs/error.log  info; //定义全局错误日志 #pid        logs/nginx.p

nginx之旅第一篇:nginx下载安装、nginx配置文件详解、nginx默认网站

一.nginx下载安装 版本nginx 1.15.5 系统环境centos7.5(本机ip192.168.199.228) 关闭selinux 和防火墙firewall 1.下载 wget http://nginx.org/download/nginx-1.15.5.tar.gz -P /usr/src 2.安装 安装大概过程 配置---编译---安装 配置 1)检查环境 是否 满足安装条件 依赖解决 2)指定安装方式 配置文件 命令文件 各种文件放哪里 开启模块功能[内 置模块 三方模块] 3

通过现象看本质——Nginx配置文件详解

通过现象看本质--Nginx配置文件详解 前言 ? 前面的文章讲述了有关Nginx进程模型以及基于异步非阻塞机制使得Nginx支持高并发的一些内容.本文将详述有关Nginx的配置文件(主配置文件nginx.conf文件)以及Nginx的体系结构. Nginx配置文件概述 ? 在我们解压后的Nginx目录中的conf目录下就是有关Nginx的配置文件,当然一般我们玩儿的主要是Nginx的配置文件多一点,而其他的配置文件均是纯文本文件.那么本小节就其中的主要配置作解释与介绍. ? 当然,在介绍之前,

LAMP架构(nginx安装,默认虚拟主机,用户认证,域名重定向,nginx配置文件详解)

一.安装nginx [[email protected] conf]# wget http://nginx.org/download/nginx-1.8.0.tar.gz [[email protected] conf]# tar zxvf nginx-1.8.0.tar.gz [[email protected] conf]# cd nginx-1.8.0 [[email protected] conf]# ./configure --prefix=/usr/local/nginx [[ema

nginx配置文件详解(三)

nginx块指令: 全局块:配置nginx全局的指令 events块:配置nginx与用户连接相关指令 http块:提供HTTP服务 server块:配置虚拟主机,一个http可以有多个server location块:匹配URL后需要做的相关操作. nginx.conf配置文件详解: 全局块: user   指定默认用户 worker_processes  1; 指定工作进程数.和cpu核数相关.cpu核数*2 worker_rlimit_nofile 102400; 进程打开的最大文件数.

青蛙学Linux—Nginx配置文件详解

Nginx的配置文件位于Nginx安装目录下的conf目录下,nginx.conf为其主要的配置文件,Nginx的主要功能都在该文件中进行配置. 1.main和event部分详解 我们先来看下nginx.conf中这一部分的内容: #user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid lo