nginx配置文件详解

nginx配置文件详解,第1张

一、安装Nginx

在安装Nginx之前,需确保系统已经安装了gcc、 openssl-devel、 pcre-devel和zlib-devel软件库。

其中, _with-http_stub_status_module 可以用来启用 Nginx 的 NginxStatus 功能,以监控 Nginx 的运行状态。

二、Nginx的配置文件结构

Nginx的配置文件nginx.conf位于其安装目录的conf目录下。

nginx.conf由多个块组成,最外面的块是main,main包含Events和HTTP,HTTP包含upstream和多个Server,Server又包含多个location。

main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。

1、main块设置的指令将影响其他所有设置。

2、server块的指令主要用于指定主机和端口。

3、upstream指令主要用于负载均衡,设置一系列的后端服务器。

4、location块用于匹配网页位置。

这四者之间的关系式:server继承main,location继承server,upstream既不会继承其他设置也不会被继承。

在这四个部分当中,每个部分都包含若干指令,这些指令主要包含Nginx的主模块指令、事件模块指令、HTTP核心模块指令,同时每个部分还可以使用其他HTTP模块指令,例如Http SSL模块、HttpGzip Static模块和Http Addition模块等。

三、Nginx的全局配置

events事件指令是设定Nginx的工作模式及连接数上限:

use是个事件模块指令,用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。

其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中。对于Linux系统,epoll工作模式是首选worker_connections也是个事件模块指令,用于定义Nginx每个进程的最大连接数,默认是1024。

最大客户端连接数由worker_processes和worker_connections决定,即Max_client=worker_processes*worker_connections。

在作为反向代理时,max_clients变为:max_clients = worker_processes * worker_connections/4。

进程的最大连接数受Linux系统进程的最大打开文件数限制,在执行 *** 作系统命令“ulimit -n 65536”后worker_connections的设置才能生效。

四、下面配置Nginx的HttpGzip模块。这个模块支持在线实时压缩输出数据流。

通过/opt/nginx/sbin/nginx -V命令可以查看安装Nginx时的编译选项,由输出可知,已经安装了HttpGzip模块。

五、负载均衡配置

下面设定负载均衡的服务器列表:

upstream是Nginx的HTTP Upstream模块,这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡。

在上面的设定中,通过upstream指令指定了一个负载均衡器的名称cszhi.com。这个名称可以任意指定,在后面需要的地方直接调用即可,Nginx的负载均衡模块目前支持4种调度算法。

六、server虚拟主机配置

下面介绍对虚拟主机的配置。

建议将对虚拟主机进行配置的内容写进另外一个文件,然后通过include指令包含进来,这样更便于维护和管理。

server标志定义虚拟主机开始,listen用于指定虚拟主机的服务端口,server_name用来指定IP地址或者域名,多个域名之间用空格分 开。index用于设定访问的默认首页地址,root指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径。

Charset用于 设置网页的默认编码格式。access_log用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式。

七、location URL匹配配置

URL地址匹配是进行Nginx配置中最灵活的部分。 location支持正则表达式匹配,也支持条件判断匹配,用户可以通过location指令实现Nginx对动、静态网页进行过滤处理。使用location URL匹配配置还可以实现反向代理,用于实现PHP动态解析或者负载负载均衡。

以下这段设置是通过location指令来对网页URL进行分析处理,所有扩展名以.gif、.jpg、.jpeg、.png、.bmp、.swf结尾的静态文件都交给nginx处理,而expires用来指定静态文件的过期时间,这里是30天。

八、StubStatus模块配置

StubStatus模块能够获取Nginx自上次启动以来的工作状态,此模块非核心模块,需要在Nginx编译安装时手工指定才能使用此功能。

stub_status设置为“on”表示启用StubStatus的工作状态统计功能。access_log 用来指定StubStatus模块的访问日志文件。auth_basic是Nginx的一种认证机制。

auth_basic_user_file用来指定认证的密码文件,由于Nginx的auth_basic认证采用的是与Apache兼容的密码文件,因此需要用Apache的htpasswd命令来生成密码文件。

然后输入两次密码后确认之后添加用户成功。

要查看Nginx的运行状态,可以输入http://ip/NginxStatus,输入创建的用户名和密码就可以看到Nginx的运行状态。

Active connections表示当前活跃的连接数,第三行的三个数字表示 Nginx当前总共处理了34561个连接, 成功创建次握手, 总共处理了354399个请求。

最后一行的Reading表示Nginx读取到客户端Header信息数, Writing表示Nginx返回给客户端的Header信息数,“Waiting”表示Nginx已经处理完,正在等候下一次请求指令时的驻留连接数。

在最后这段设置中,设置了虚拟主机的错误信息返回页面,通过error_page指令可以定制各种错误信息的返回页面。在默认情况下,Nginx会在主目录的html目录中查找指定的返回页面。

特别需要注意的是,这些错误信息的返回页面大小一定要超过512K,否者会被ie浏览器替换为ie默认的错误页面。

通常,我们在美化或者希望能更好的兼容搜索引擎的时候我们常常使用nginx的rewrite模块来实现,例如:我们希望原本的访问链接xxxx.com/xx/xx/xx.php?id=12,变成这种:xxx.com/xx/xx/12.html;又或者是原本的访问链接太长,我们希望能够简洁一点等等吧,下面我将针对这两种情况来做配置。

(1) 页面伪静态

将xxxx.com/xx/xx/xx.php?id=12这种访问链接变成xxx.com/xx/xx/12.html这种

下面笔者在本地的网站目录下创建一个test.php文件

原本的访问链接: http://w.myblog.com/api/php/test.php?id=1 ,我们访问看下:

需要注意的是:rewrite 完后不能写break,否则php文件无法解析。

我们使用链接: http://w.myblog.com/api/php/1.html 来访问下,

解析php的那段避免累赘,这里就不再写上了。

我们访问看下: http://w.myblog.com/api/php/test-4.html

(2) 简化访问路径

使用过tp的或者其他一些类型的php框架小伙伴们我们在访问方法时需要这样访问: http://w.tp5.com/index.php/index/index/info ,这个表示访问index模块的index控制器中的info方法,但是这么访问不太方便,我们希望去掉index.php,直接使用 http://w.tp5.com/index/index/info 访问,那我们就需要配置下nginx,做一个rewrite.

这段配置的意思是:当访问的文件或者目录不存在时,重定向到某个php文件.

!-e 意思是:-e和!-e用来判断是否存在文件或目录。

last: 相当于apache里面的[L]标记,表示rewrite.

s:表示参数.

加上配置后我们再来访问下:

发现可以正常访问了。需要注意的是:如果不写s=xxx,配置会不生效。

好了,本篇文章就到这里了,有需要补充的小伙伴欢迎在下面给我留言哦,看到会及时回复的。

开始建站了,暂时还没想要做些什么东西。

Anyway,先搞个云服务器吧,那要怎么搭建呢?先来个最简单的。

Nginx 配置文件目录一般在 /etc/nginx/ 下,打开 nginx.conf 文件可以看到配置:

当外网用户访问服务器 Web 服务由 Nginx 提供,Nginx 需要配置静态资源的路径信息才能通过 URL 正确访问到服务器上的静态资源。

当我们在服务器上安装并启动 Nginx 之后,就可以通过 http://<域名或IP> 访问我们的网页了。所以,在浏览器中输入 http://100.2.3.4 即可。

我们观察到浏览器的地址变成了 http://100.2.3.4/index.html ,这页面是安装 Nginx 的默认站点,可以在 /usr/share/nginx/html 目录下找到。在 nginx.conf 配置文件中,有一项 root /usr/share/nginx/html 的配置,意思是当外网访问服务器 跟目录 时,Nginx 会将资源指向 /usr/share/nginx/html 的站点。

但如果输入地址,无法打开(如下截图)。

以阿里云为例,需要在云服务器添加 “安全组规则” ,添加并保存,重新刷新页面就能打开了。

我习惯将前端静态资源放置到服务器的 /data/www 下,因此将配置修改为 root /data/www 。此时访问 http://100.2.3.4 会指向 /data/www/index.html (在不配置 location 的 index 情况下,Nginx 默认配置是 index.html )。

由于我使用的是 Mac 机器,因此可以直接在系统终端使用 scp 命令将本地文件上传到云服务器。

scp (secure copy)用于在 Linux 下进行远程拷贝文件的命令。类似于 cp ,只不过 cp 只能在本机进行拷贝,不能跨服务器。 -r 表示递归复制整个目录。

需要注意一下,下面两种的区别:

其中 1️⃣ 得到的是 /data/www/dist ,而 2️⃣ 得到的是 /data/www 。前者表示将 dist 整个目录拷贝至 /data/www 下。后者是把 dist 目录下的所有子文件和子目录都拷贝至 /data/www 。

换句话说就是,前者配置 root 的路径应该是 /data/www/dist ,后者则为 /data/www 。

效果如下:

在浏览器中访问 http://100.2.3.4 即可看到我们配置的网页了。

最简单的 Nginx 部署静态网页就完了,其他的下次再讲...

The end.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11401969.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存