博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nginx配置文件的基本配置
阅读量:6411 次
发布时间:2019-06-23

本文共 3667 字,大约阅读时间需要 12 分钟。

hot3.png

记录一下查看nginx官网的翻译内容,翻译有误请指正。

配置文件结构介绍

nginx配置文件由特定指令控制的模块组成。指令分为简单指令和块指令。 一个简单的指令由名字和参数(由空格分隔)组成,以分号(;)结尾。 块指令具有与简单指令相同的结构, 但它不是以分号结尾,而是一组指令集合由大括号({和})包围而结束的。 如果一个块指令在大括号中包含其他指令,则称为上下文(如 , , , 和). 。

放在配置文件中任何上下文外部的指令都被认为是在 上下文中。 eventshttp指令应该放在main上下文 , server放在http, location 放在 server 里。

#号之后的其余部分被视为注释。

 提供静态内容的服务

一个重要的web服务器任务是提供文件(如图像或静态HTML页面)。  下面示例演示nginx根据请求,将从不同的本地目录提供文件服务: /data/www ( 可能包含HTML文件 )  而data/images (包含图片) 。这就需要编辑配置文件, 块里添加一个 块,并且 块包含两个 块。

首先,创建 /data/www 目录后放进 index.html 文件,创建 /data/images 目录后放进需要向外提供服务的图片。

接下来,打开配置文件。 默认的配置文件已经包含了服务器块的几个示例,大部分都被注释掉了。 现在,注释掉所有这些块,并启动一个新的服务器块:

http {    server {    }}

通常,配置文件可能包括几个服务器块,这些服务器块由它们所的端口和。 一旦nginx决定哪个服务器处理一个请求, 它就会根据服务器块中定义的 location指令的参数测试请求头中指定的URI。

将以下 location块添加到 server 块 :

location / {    root /data/www;}

这个location块指定 “/”前缀与请求的URI相比较的。 对于匹配的请求, URI将被添加到 指令中指定的路径,即 /data/www,以形成本地文件系统中请求文件的路径。 如果有几个匹配的location块,nginx选择前缀最长的一个。 上面的location块提供了长度为1的最短前缀,因此只有当所有其他location块都不能提供匹配时,才会使用这个块。

接下来,添加第二个location块:

location /images/ {    root /data/images;}

它将匹配以 /images/开头的请求 ( location / 也匹配这样的请求,但是前缀更短,优先权相对/images/ 低).

server块的最终配置应该是这样的:

server {    location / {        root /data/www;    }    location /images/ {        root /data/images;    }}

对于以 /images/开头的uri请求,服务器将从/data/images目录发送文件。 例如,在响应 http://localhost/images/example.png请求时,nginx将发送 /data/images/example.png文件。 如果这样的文件不存在,nginx将发送一个响应,指示404错误。 不以 /images/ 开头的uri请求将映射到 /data/www目录。 例如,在响应 http://localhost/some/example.html请求时,nginx将发送/data/www/some/example.html文件。

若要应用新的配置,请在nginx尚未启动时启动它,或将reload信号发送给nginx的主进程,方法如下:

nginx -s reload

 备注: 如果无法像预期的那样工作,您可以尝试在/usr/local/nginx/logs/var/log/nginx 目录中的access.log和error.log文件中找出原因

 建立一个简单的代理服务器

nginx的常见用途之一是将其设置为代理服务器,这意味着服务器接收请求,将它们传递给代理服务器,从代理服务器检索响应,并将它们发送给客户机。

示例配置一个基本的代理服务器,它使用本地目录中的文件为图像请求提供服务,并将所有其他请求发送到代理服务器。 在本例中,两个服务器将在单个nginx实例上定义。

首先,通过向nginx配置文件中添加一个服务器块来定义代理服务器,该服务器块的内容如下:

server {    listen 8080;    root /data/up1;    location / {    }}

这是一个简单的服务器,它监听端口8080(以前,由于使用了标准端口80,所以没有指定listen指令),并将所有请求映射到本地文件系统上的 /data/up1 目录。 创建这个目录并将index.html文件放入其中。 注意,此处的root指令放在server上下文中。 当为服务请求而选择的location块不包含自己的root指令时,使用 server 的root指令。

接下来,使用上一节中的服务器配置并将其修改为代理服务器配置。 在第一个location块中, 使用 指令配置协议、代理服务器的名称和端口。如下例子所示:

server {    location / {        proxy_pass http://localhost:8080;    }    location /images/ {        root /data/images;    }}

 在第二个location块中,它当前将带有 /images/ 前缀的请求映射到 /data/images目录下的文件,修改后将变成与具有典型文件扩展名的图像请求匹配。 修改后的 location 块如下所示:

location ~ \.(gif|jpg|png)$ {    root /data/images;}

参数是一个正则表达式,匹配所有以.gif、.jpg或.png结尾的uri。 正则表达式的前面应该加上 ~ 。 相应的请求将映射到/data/images目录。

当nginx选择一个 location块来服务一个请求时,它首先检查指定前缀的 指令,记录带有最长前缀的 ,然后检查正则表达式。 如果与正则表达式匹配,nginx会选择这个 location,否则,它会选择前面记录的location

代理服务器的最终配置如下所示:

server {    location / {        proxy_pass http://localhost:8080/;    }    location ~ \.(gif|jpg|png)$ {        root /data/images;    }}

此服务器将筛选以.gif、.jpg或.png结尾的请求,并将它们映射到 /data/images目录,并将所有其他请求传递到上面配置的代理服务器。

要应用新的配置,按照前面部分的描述将重新加载信号发送到nginx。

更多的指令来进一步配置代理连接查看。

 建立FastCGI代理

nginx可用于将请求路由到FastCGI服务器,后者运行使用各种框架和编程语言(如PHP)构建的应用程序。 使用FastCGI服务器最基本的nginx配置包括:使用 指令而不是proxy_pass指令,以及 指令来设置传递给FastCGI服务器的参数 。 假设FastCGI服务器可以在localhost:9000上访问。 以上一节中的代理配置为基础,用fastcgi_pass指令替换proxy_pass指令,并将参数更改为localhost:9000。 在PHP中,SCRIPT_FILENAME参数用于确定脚本名称,QUERY_STRING参数用于传递请求参数。 得到的配置如下所示:

server {    location / {        fastcgi_pass  localhost:9000;        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;        fastcgi_param QUERY_STRING    $query_string;    }    location ~ \.(gif|jpg|png)$ {        root /data/images;    }}

这将设置一个服务器,该服务器通过FastCGI协议将除静态图像请求之外的所有请求路由到在localhost:9000上操作的代理服务器。

 

 

翻译自:

 

转载于:https://my.oschina.net/jennerlo/blog/3016665

你可能感兴趣的文章
数据库之事务之间的隔离
查看>>
人工智能产业化面临多重挑战 应提前布局抢占先机
查看>>
小米8.0系统机器一键激活xposed框架的流程
查看>>
HTML 属性
查看>>
前端面试之如何获取一个iframe的scrollTop
查看>>
阿里云高级技术专家带你全面了解云主机性能评测
查看>>
CVE漏洞—PHPCMS2008 /type.php代码注入高危漏洞预警
查看>>
SpringCloudSpringBootmybatis分布式微服务云架构-hystrix参数详解
查看>>
(十三)Java springcloud B2B2C o2o多用户商城 springcloud架构-config-bus
查看>>
当Kubernetes应用遇到阿里分批发布模式
查看>>
大数据时代,IT行业竟有如此多高薪职位!
查看>>
获取多个值赋多变量
查看>>
用Pgpool-II实现Postgresql高可用集群
查看>>
技术向销售学什么(一)
查看>>
ESFramework Demo -- 简单的网络硬盘Demo
查看>>
ulimit命令用来限制系统用户对shell资源的访问(设置Linux文件打开数)
查看>>
手机网页返回
查看>>
在ADT中从AVD(Android模拟器)中导入(导出)文件
查看>>
弹性盒子布局flex, box-sizing: border-box
查看>>
《LoadRunner 没有告诉你的》之一——描述性统计与性能结果分析
查看>>