Nginx学习:HTTP核心模块(一)简单搭建前面就说过了,HTTP 模块是整个 Nginx 中最核心的模块。在这其中,它又有一部分最核心的模块,其实也就是在编译安装的时候,我们不装任何扩展就自带的模块。这一部分模块就像是基本的 PHP 语法一样,是最基础的,也是我们最需要重点掌握的内容。 今天先入个门,搭起简单的一套 Web 服务,让 Nginx 可用就行了。内容不复杂,但如果是初学者,那一定要跟着动手练练哦。即使是做了几年的老油条了,如果你对 Nginx 也仅限于 宝塔 之类的面板配置的话,那也最好一起动手玩玩哦。 HTTP模块在 Nginx 中,除了核心模块之外,其它模块之间的划分就是通过命令标识与一对花括号来体现的,我们上回学习到的事件模块就是在 events 中进行配置。其实很像我们在编程语言中的作用域的感觉。比如在 HTTP 模块中,所有的配置指令都是在下面这个 http 指令模块中。
它就是为HTTP服务器提供配置上下文的,后续我们要学习的所有和 HTTP 相关的配置指令都是在这个 http 下面进行配置的。也就是说,马上要学习的内容,基本全是在这个 http 内部的配置指令。 今天是第一篇,所以咱们还是先搭起来一个简单的服务器。 简单搭建起来一个服务器只需要写下下面这些配置,就可以运行起来一个标准的 Web HTTP 静态服务器了。
这个配置其实就是我通过 接下来,关闭正在运行的 Nginx ,还记得之前命令行学过的内容吧。
然后使用我们这个新的配置文件来启动。
为啥不直接用自带的原始的那个 nginx.conf 文件呢?其实如果是刚装好的 Nginx ,那么 nginx.conf 文件和上面的配置内容是一模一样的,只是有注释而已。用默认的 nginx.conf 文件也可以,但是在写文章的时候我对那个默认的配置文件已经做了很多更改,所以暂时我不想动它。正好也顺便复习一下之前学习的命令行相关的内容嘛。同时也证明一下,启动 nginx 的时候,具体使用哪个配置文件是我们可以自己指定的,就像 Reids 那些一样。 好了,现在我们使用的就是这个新的配置文件了。大家可以访问一下试试。 基本模块在 http 中,最基础的就是 server 模块,它代表一个虚拟主机,下篇文章我们就来重点介绍它。在 http 中,一定要有一个虚拟主机,要不就不知道访问谁了。 另一个就是 location 模块,它其实是在 server 之下的,用于指定路径的访问。一般最少都会有一个 这两块是 Http 模块中最重要的两部分内容。 return 指令这个指令是属于重写 Rewrite 模块的,不在 HTTP 的核心模块中,未来我们学习到相关的模块时才会详细的学习,这里先只是简单的介绍一下,因为它对于我们的调试非常有用。
在 现在大家需要重载服务配置,这回可不能直接就 连接 PHP这个连接 PHP 的配置,对于我们大部分 PHPer 来说应该非常熟悉了。但对于使用其它语言的,可能会用得比较少。其实这套配置在默认的 nginx.conf.default 和 nginx.conf 中已经给出了。我们复制过来就好。
这个 location 使用了正则,后面学习的时候再详细说,意思就是所有以 .php 结尾的文件,走这个 location 。在这里,我们需要先修改一个地方,就是 fastcgi_pass ,表示连接 PHP-FPM 的方式。之前在 了解PHP-FPMhttps://mp.weixin.qq.com/s/NUpDnfYfbPuWmal4Am3lsg 这篇文章中我们就已经介绍过了 UnixSocket 和 TCP 两种连接方式的区别。因此,要根据你在当前服务器上安装的 PHP-FPM 的配置来进行配置。比如我这里使用的就是 UnixSocket 方式,sock 文件在 /var/sock/php-fpm/www.sock 。因此,最终的配置就是修改一下这里。
接下来,在程序安装目录的 html 目录下新建一个 script 目录(我这里是 /usr/local/nginx/html ),里面放一个 1.php 文件,文件内容就简单地打印一个
现在访问一下 /1.php ,不对呀,File not found. 错误出现了。这是啥情况?其实呀,还有一个地方被我们忽略了,那就是 fastcgi_param SCRIPT_FILENAME 这一行,默认它是 /scripts/$fastcgi_script_name。表示的是 FastCGI的脚本目录是 /scripts 目录下的文件,$fastcgi_script_name 是一个 Nginx 变量,表示的是具体的脚本名称,也就是 1.php 。合起来的话,就是让 FastCGI 去执行 /srcipts/1.php 这个文件。很明显,这个文件不存在呀,我们创建的文件路径应该是 /usr/local/nginx/html/scripts/1.php 嘛。 这里的修改其实很简单,再加一个变量
现在重载配置之后再访问一下,看看是不是正常显示 PHP 输出的内容了。 目录权限问题前面的测试,不管添加的文件,还是 html 这个目录,权限全是 root 用户的,并且文件权限也只有 644 。但是大家在日常使用时,更喜欢将 Nginx 的项目根目录设置为 www 或者 nginx 之类的用户,也就是跟我们在 Nginx 设置的 当然,这个用户名不是完全一定要用 www 之类的,你完全可以指定自己喜欢的用户名,不过需要注意的是要设置成 nologin 的,而且 Nginx 和 PHP-FPM 都要配置成一样的。这样才能避免因为权限而产生的各种问题。 总结比较简单吧?非常入门。但是对于纯入门的新手来说可能也会比较懵圈,另外我也没讲过 Nginx 的安装,这一部分的内容大家可以在网上搜搜,不管是视频还是文章,简直不要太多了。推荐的还是手动编译安装一下,将来学完了日常在工作中不管是 yum 还是面板工具之类的都没问题。但是打基础阶段还是用笨方法吧。 好了,接下来就进入到我们第一个非常核心的部分,那就是 Server 模块的学习。 |
|