Nginx 基本配置介绍
一、什么是Nginx
Nginx 是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP / POP3代理服务器。 Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。
Nginx 有一个主线程( master process)和几个工作线程(worker process)。主线程的目的是加载和验证配置文件、维护工作线程。
工作线程处理实际的请求,Nginx 采用基于事件的模型和依赖操作系统的机制在工作线程之间高效地分发请求。工作线程的数量可配置,也可自动调整为服务器CPU的数量。
Nginx 及其模块的工作方式由配置文件确定。 默认情况下,配置文件名为 nginx.conf。
二、配置文件介绍
Nginx 配置的核心是定义要处理的 URL
以及如何响应这些 URL
请求,即定义一系列的虚拟服务器(Virtual Servers)控制对来自特定域名或者 IP 的请求的处理。
每一个虚拟服务器定义一系列的 location
控制处理特定的 URI 集合。每一个location
定义了对映射到自己的请求的处理场景,可以返回一个文件或者代理此请求。
Nginx 由不同的模块组成,这些模块由配置文件中指定的指令控制。 指令分为简单指令和块指令。
一个简单指令包含指令名称和指令参数,以空格分隔,以分号(;
)结尾。 块指令与简单指令类似,但是由大括号({
和}
)包围。 如果块指令大括号中包含其他指令,则称该指令为上下文(如: events
, http
, server
和 location
)。
配置文件中的放在上下文之外的指令默认放在主配置文件中(类似继承主配置文件)。 events
和 http
放置在主配置文件中,server
放置在http
块指令中,location
放置在server
块指令中。
配置文件的注释以 #
开始。
三、配置文件如何配置
1、静态内容
http {
server {
listen 8080; # 改server块监听的端口号,不设置默认是80
root /data/upl; # 当location块中没有设置root时,会使用此root指令 location / { # 这里的 / 部分代表URI,是对请求的匹配,如要写正则,前面加个~
root /data/www;
} location /images/ {
root /data;
} }
}
1)如果 URI
匹配多个 location
块,Nginx 采用最长前缀匹配原则(类似计算机网络里面的IP匹配)
2)改配置的意思可以理解为对于 http://localhost/images/example.png
请求,nginx 将响应 /data/images/example.png
文件。 如果不存在,nginx 将返回404。URI
不以 /images/
开头的请求将映射到 /data/www
目录。 例如,对于 http://localhost/some/example.html
请求,nginx 将响应 /data/www/some/example.html
文件。
2、server_name
如果多个 server
的 listen
IP 和端口号一模一样, Nginx 通过请求头中的 Host 与 server_name
定义的主机名进行比较,来选择合适的虚拟服务器处理请求:
server {
listen 80;
server_name domain.com
...
}
server_name
的参数可以为:
- 完整的主机名,如:
api.domain.com
。 - 含有通配符(含有
*
),如:*.domain.com
或api.*
。 - 正则表达式,以
~
开头。
- 完整的主机名,如:
通配符只能在开头或结尾,而且只能与一个 .
相邻。www.*.example.org
和 w*.example.org
均无效。 但是,可以使用正则表达式匹配这些名称,例如 ~^www\..+\.example\.org$
和~^w.*\.example\.org$
。 而且 *
可以匹配多个部分。 名称 * .example.org
不仅匹配www.example.org
,还匹配www.sub.example.org
。对于正则表达式:Nginx 使用的正则表达式与 Perl 编程语言(PCRE)使用的正则表达式兼容。 要使用正则表达式,且必须以 ~
开头。
同样,如果多个名称匹配 Host
头部, Nginx 采用下列顺序选择:
- 完整的主机名,如
api.lufficc.com
。 - 最长的,且以
*
开头的通配名,如:*.lufficc.com
。 - 最长的,且以
*
结尾的通配名,如:api.*
。 - 第一个匹配的正则表达式。(按照配置文件中的顺序)
- 完整的主机名,如
即优先级:api.lufficc.com
> *.lufficc.com
> api.*
> 正则。
如果 Host
头部不匹配任何一个 server_name
,Nginx 将请求路由到默认虚拟服务器。默认虚拟服务器是指:nginx.conf
文件中第一个 server
或者 显式用 default_server
声明
3、代理服务器
Nginx 的一个常见应用是将其设置为代理服务器(Proxy Server),即接受客户端的请求并将其转发给代理服务器,再接受代理服务器发来的响应,将它们发送到客户端。
比如我们可以用一个 Nginx 实例实现对图片文件的请求使用本地文件系统,而其他请求转发到代理服务器。
首先,修改 Nginx 的配置文件中的http块如下:
http {
server {
listen 8080;
root /data/upl; location / {
proxy_pass http://localhost:8080/;
} location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
}
此服务器将过滤以.gif,.jpg或.png结尾的请求,并将它们映射到 /data/images
目录(通过向 root
指令的参数添加请求的URI),并将所有其他请求发送给上面配置的代理服务器。这样,图片和其他请求就可以使用不同的服务器来处理。
4、使用变量
你可以使用变量来使 Nginx 在不同的请求下采用不同的处理方式。变量是在运行时计算的,用作指令的参数。 变量由 $
开头的符号表示。 变量基于 Nginx 的状态定义信息,例如当前处理的请求的属性。
有很多预定义变量,例如核心的 HTTP 变量,你也可以使用 set
,map
和 geo
指令定义自定义变量。 大多数变量在运行时计算,并包含与特定请求相关的信息。 例如,$remote_addr
包含客户端 IP 地址,$uri
保存当前URI值。
一些常用的变量如下:
变量名称 | 作用 |
---|---|
$uri |
请求中的当前URI(不带请求参数),它可以通过内部重定向,或者使用index指令进行修改,$uri 不包含主机名,如 /foo/bar.html 。 |
$arg_name |
请求中的的参数名,即“?”后面的arg_name=arg_value 形式的arg_name |
$hostname |
主机名 |
$args |
请求中的参数值 |
$query_string |
同 $args |
$request |
代表客户端的请求地址 |
$request_uri |
这个变量等于包含一些客户端请求参数的原始URI,它无法修改,不包含主机名,如:/cnphp/test.php?arg=freemouse 。 |
Nginx 基本配置介绍的更多相关文章
- Nginx安装配置介绍(二)
一:Nginx安装(Windows) 官网地址:https://nginx.org/en/download.html 解压完成后,文件目录如下: 启动Nginx: 直接双击目录下的nginx.exe, ...
- 第十章 nginx常用配置介绍
一.虚拟主机 1.配置方式 #虚拟主机配置方式:1.基于多IP的方式2.基于多端口的方式3.基于多域名的方式 2.方式一:基于多IP的方式 1.第一个配置文件[root@web02 /etc/ngin ...
- Nginx编译配置介绍
源码包 nginx-1.6.2.tar.gz --help 使用帮助 --prefix=PATH Nginx安装路径,如果没有指定,默认为/usr/local/nginx. --sbin-path=P ...
- Nginx简介及配置介绍
一.什么是Nginx Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发 ...
- Windows下Nginx的配置及配置文件部分介绍
一.在官网下载 nginx的Windows版本,官网下载:http://nginx.org/download/ 选择你自己想要的版本下载,解压 nginx(例如nginx-1.6.3) 包到你的win ...
- Nginx 日志格式配置介绍
Nginx日志格式配置介绍 by:授客 QQ:1033553122 测试环境 CentOS 6.5-x86_64 nginx-1.10.0 配置例子 log_format main '$ ...
- nginx基本配置与参数说明以及Nginx中的upstream轮询机制介绍
转自:http://blog.csdn.net/happydream_c/article/details/54943802 一.nginx简介 Nginx (发音为[engine x])专为性能优化而 ...
- 理解nginx的配置
Nginx配置文件主要分成四部分:main(全局设置).server(主机设置).upstream(上游服务器设置,主要为反向代理.负载均衡相关配置)和 location(URL匹配特定位置后的设置) ...
- 【转】linux 编译安装nginx,配置自启动脚本
linux 编译安装nginx,配置自启动脚本 本文章来给各位同学介绍一篇关于linux 编译安装nginx,配置自启动脚本教程,希望有需要了解的朋友可一起来学习学习哦. 在公司的suse服务器装ng ...
随机推荐
- linux svn 客户端基本使用命令
1.从svn获取项目 svn co URL --username XX --password XX; 2.添加code file svn add codeFile; svn ci -m "c ...
- Struts2返回JSON数据的具体应用范…
Struts2返回JSON数据的具体应用范例 博客分类: Struts2 Struts2JSON 早在我刚学Struts2之初的时候,就想写一篇文章来阐述Struts2如何返回JSON数据的原理和具 ...
- VMware10中安装centos7没有可用的网络设备
1.问题描述 centos7安装到虚拟机无法上网 2.安装环境 win7 x64 WM 10.01 iso CentOS-7-x86_64-DVD-1503-01.iso {4.01G} ...
- Oracle(1)
PL/SQL -- 表示注释 ||''|| 拼接字符串 别名 null值和所有数值计算结果都为null 空置值转换函数: nvl(列,所要转换的数) in 相当于用 or 链接. not in 相当于 ...
- yii2之使用ueditor
代码效果: 1.去github下载yii2高级版ueditor扩展 2.将下载的扩展放入 /common/widgets 中(目录如图所示) 3.在视图中的代码 <?=common\widge ...
- Search in a Binary Search Tree
Given the root node of a binary search tree (BST) and a value. You need to find the node in the BST ...
- 【Unity】物理碰撞实验
http://www.cnblogs.com/javawebsoa/archive/2013/05/18/3085818.html 这几天为了准备面试,所以决定对平时学习中的盲点扫盲一下,首先想到的就 ...
- Solr 6.7学习笔记(03)-- 样例配置文件 solrconfig.xml
位于:${solr.home}\example\techproducts\solr\techproducts\conf\solrconfig.xml <?xml version="1. ...
- poj 2407 欧拉函数裸题
http://poj.org/problem?id=2407 题意:多组数据,每次输入一个数 ,求这个数的欧拉函数 int euler_phi(int n){//单个欧拉函数 int m=(int)s ...
- C 语言实例 - 循环输出26个字母
C 语言实例 - 循环输出26个字母 循环输出 个字母. 实例 #include <stdio.h> int main() { char c; for(c = 'A'; c <= ' ...