Nginx-一个IP配置多个站点

  对于Nginx,一个IP上配置多个站点还是很常见的。尤其是在开发环境上,更是如此。

  在centos上搭建php-fpm+nginx环境不是很难,网上有很多的帖子,按照上面讲解的,把需要安装的软件安装一下就行了。

  安装完毕后,配置文件通常会在/etc/nginx目录下,我这边的内容如下:

  一般来说,除非有特别需求,我们不会修改文件里面的内容。现在的话,可以把这个文件当做我们的参考项。

  http:这个节点就代表了一个Nginx,是我们的大总管。它内部可以有多个Server配置项,代表多个站点。

  这一行虽然看起来不起眼,但是对于配置多个站点而言,及极其的重要。这点待会再讲。

  log_format: 日志的格式,这点将体现在Nginx日志记录的动作上。

  access.log: 在这个选项的第一个单词是main,就是刚才log_format定义的日志格式了。后面对于error.log 同样适用。

  Server节点:一个Server节点,包含了对一个站点的配置,这里面的

  内容将会覆盖http节点的配置,所以优先级对于一个站点而言,相对更高一点。

  include /etc/nginx/default.d/*.conf

  不难看到这个配置出现在Server节点内部,所以还是对本站点配置起作用的。这个default.d目录存放的是对于所有Server节点通用性的功能,其存在的意义就是能让我们少写一些重复性的配置内容。而是抽取出来,放到一个通用的目录下。

  下面进入正题,看看如何在一个IP上配置多个站点。那么首先,我们需要先创建几个文件夹,然后作为我们的多个站点。

  在home/目录下创建两个文件夹,一个是blog一个是forum,然后里面分别放一个index.php,注意内容可以良好的区分就可以了。

  刚才我们也了解到,有多个站点的话其实就是多个Server节点,在f中通过include /etc/nginx/conf.d/*.conf来引入到了http节点,所以我们只需要在/etc/nginx/conf.d/目录下创建我们特定于某个站点所需要的配置文件就可以了。

  注意: 注意后缀名为.conf,不然按照include的规则,无法正确引入相关的配置文件。

  添加完配置文件之后就可以,重启Nginx了。在CentOS上重启的命令如下:

  一开始刚刚接触Nginx的时候,对这个配置文件实在是摸不着头脑。那个时候,在我的印象中,php+apache才是黄金组合,没想到随着接触Nginx的时间变长,php-fpm+nginx的组合让我大开眼界。

  在配置的道路上,总会有那么几个问题,一直困扰着我,下面我就总结一下,我个人认为的比较重要的问题吧。

  在Server节点的location内部,有这么一个配置项。很是让人摸不着头脑。

  从上面的配置文件中,我们也看到了好多个对它的不同的配置,那么到底该怎么选择呢?

  在网上我找到了这么一条回答,感觉人家讲的挺好的。有兴趣的可以看看下面这篇文章。

  那么,对我们来说,要怎么选择呢? 答案是取决于php-fpm的配置。有下面两种方式:

  这里面php-fpm.sock是一个文件,是由php-fpm生成的,类型为srw-rw—-, 具体这个路径怎么写,还是取决于你本地的php-fpm生成的sock文件的位置。

  这两种都可以成功让php-fpm和Nginx组合起来,区别什么的,贴出大佬的原话应该比较有说服力。

  所以,下次就不用再纠结这个问题了,f和nginx.conf的相关项保持一致就好了。

  前几天Nginx还工作的好好的,不知道为啥,这周一一上班就出现了这个问题。

  我也照着改了下,发现还是不行,突然想到上周五修改了目录权限,去掉了写权限,会不会是这个问题呢,然后就抱着试一试的态度,执行了下面的命令:

  真的是很无语的一个问题,所以下次再出现502的错误时,就多了一个参考的错误修复选项了。

  :大神,我把你的代码里的runcode替换掉,想改成中文聊天的,可是我发现只支持英文不支持中文,请问有...

  :我发现了一个小错误,删除重复的那个函数里面,如果第一个节点和第二个节点的值一样的话,这个就检查不出来...

  本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

相关阅读