源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Nginx一个IP如何配置多个站点的方法教程

  • 时间:2022-12-04 13:28 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Nginx一个IP如何配置多个站点的方法教程
[b]前言[/b] 对于Nginx,一个IP上配置多个站点还是很常见的。尤其是在开发环境上,更是如此。 下面在我的阿里云上简单的实现这样一个需求: 在一个IP上通过对端口区分来配置多个站点。 环境初始化目录一览配置站点准备添加配置文件疑难杂项fastcgi_passNginxphp-fpm的进程间通信有两种方式总结 [b]环境[/b] 手头上正好有一台阿里云学生机,趁着没过期,就拿来用吧。 [list] [*]操作系统:centOS7[/*] [*]php-fpm[/*] [*]Nginx[/*] [/list] [b]初始化[/b] 在centos上搭建php-fpm+nginx环境不是很难,网上有很多的帖子,按照上面讲解的,把需要安装的软件安装一下就行了。 [b]目录一览[/b] 安装完毕后,配置文件通常会在[b]/etc/nginx[/b]目录下,我这边的内容如下: [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100119_0_75472.png[/img] 里面的[b]nginx.conf[/b]就是默认的配置文件了。下面简单的来看下里面的大致内容。 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100119_1_86244.png[/img] 一般来说,除非有特别需求,我们不会修改[b]nginx.conf[/b]文件里面的内容。现在的话,可以把这个文件当做我们的参考项。 [b]我个人认为里面比较重要的配置项有这么几个:[/b] [list] [*]http:这个节点就代表了一个Nginx,是我们的大总管。它内部可以有多个Server配置项,代表多个站点。[/*] [*][b]include /etc/nginx/conf.d/*.conf;[/b] 这一行虽然看起来不起眼,但是对于配置多个站点而言,及极其的重要。这点待会再讲。[/*] [*]log_format: 日志的格式,这点将体现在Nginx日志记录的动作上。[/*] [*]access.log: 在这个选项的第一个单词是main,就是刚才log_format定义的日志格式了。后面对于error.log 同样适用。[/*] [*]Server节点:一个Server节点,包含了对一个站点的配置,这里面的[b]同名[/b]内容将会覆盖http节点的配置,所以优先级对于一个站点而言,相对更高一点。[/*] [*][b]include /etc/nginx/default.d/*.conf[/b] 不难看到这个配置出现在Server节点内部,所以还是对本站点配置起作用的。这个default.d目录存放的是对于所有Server节点通用性的功能,其存在的意义就是能让我们少写一些重复性的配置内容。而是抽取出来,放到一个通用的目录下。[/*] [*]location的内容,待会再讲。[/*] [/list] [b]配置[/b] 下面进入正题,看看如何在一个IP上配置多个站点。那么首先,我们需要先创建几个文件夹,然后作为我们的多个站点。 [b]站点准备[/b] 在[b]home/www[/b]目录下创建两个文件夹,一个是blog一个是forum,然后里面分别放一个index.php,注意内容可以良好的区分就可以了。 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100120_2_76006.png[/img] [b]添加配置文件[/b] 刚才我们也了解到,有多个站点的话其实就是多个Server节点,在nginx.conf中通过[b]include /etc/nginx/conf.d/*.conf[/b]来引入到了http节点,所以我们只需要在[b]/etc/nginx/conf.d/[/b]目录下创建我们特定于某个站点所需要的配置文件就可以了。 [b]注意: [/b]注意后缀名为.conf,不然按照include的规则,无法正确引入相关的配置文件。 你也可以像我这么做,如下: [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100120_3_528.png[/img] 左侧的[b]fastcgi_param SCRIPT_FILENAME [/b]写错了,应该是[b]$document_root[/b],图片上没改过来,这点明确一下就可以了。 添加完配置文件之后就可以,重启Nginx了。在CentOS上重启的命令如下:
systemctl restart nginx
如果你的是Debian系的Linux的话,也可以使用:
service nginx restart
这时,可以通过浏览器访问,看看我们的配置项到底成功了没有。 [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100121_4_62703.png[/img] 这样就成功的在一个IP上通过端口不同,配置了多个站点了。 [b]疑难杂项[/b] 一开始刚刚接触Nginx的时候,对这个配置文件实在是摸不着头脑。那个时候,在我的印象中,php+apache才是黄金组合,没想到随着接触Nginx的时间变长,php-fpm+nginx的组合让我大开眼界。 在配置的道路上,总会有那么几个问题,一直困扰着我,下面我就总结一下,我个人认为的比较重要的问题吧。 [b]fastcgi_pass[/b] 在Server节点的location内部,有这么一个配置项。很是让人摸不着头脑
 location ~ .php$ {
 root /home/wwwroot;
 fastcgi_pass 127.0.0.1:9000;
 #fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
 #fastcgi_pass unix:/tmp/php-cgi.sock;
 try_files $uri /index.php =404;
 fastcgi_split_path_info ^(.+.php)(/.+)$;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }
从上面的配置文件中,我们也看到了好多个对它的不同的配置,那么到底该怎么选择呢? 在网上我找到了这么一条回答,感觉人家讲的挺好的。有兴趣的可以看看下面这篇文章。https://segmentfault.com/q/1010000004854045 [b]总结来讲,有这么几点内容:[/b] Nginx+php-fpm的进程间通信有两种方式 一个是TCP,另一个是Unix Domain Socket。 [list] [*]TCP: 格式为IP:端口, 可以跨服务器。[/*] [*]Unix Domain Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一个服务器上的场景。[/*] [/list] 那么,对我们来说,要怎么选择呢? 答案是取决于php-fpm的配置。有下面两种方式: [b]方式一:[/b]
php-fpm.conf: listen = 127.0.0.1:9000
nginx.conf:fastcgi_pass 127.0.0.1:9000
[b]方式二:[/b]
php-fpm.conf: listen = /tmp/php-fpm.sock
nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock
这里面php-fpm.sock是一个文件,是由php-fpm生成的,类型为srw-rw—-, 具体这个路径怎么写,还是取决于你本地的php-fpm生成的sock文件的位置。 这两种都可以成功让php-fpm和Nginx组合起来,区别什么的,贴出大佬的原话应该比较有说服力。 UNIX Domain Socket可用于两个没有亲缘关系的进程,是目前广泛使用的IPC机制,比如X Window服务器和GUI程序之间就是通过UNIX Domain Socket通讯的.这种通信方式是发生在系统内核里而不会在网络里传播.UNIX Domain Socket和长连接都能避免频繁创建TCP短连接而导致TIME_WAIT连接过多的问题.对于进程间通讯的两个程序,UNIX Domain Socket的流程不会走到TCP那层,直接以文件形式,以stream socket通讯.如果是TCP Socket,则需要走到IP层,对于非同一台服务器上,TCP Socket走的就更多了. [img]http://img.1sucai.cn/uploads/article/2018010710/20180107100121_5_94842.png[/img] 所以,下次就不用再纠结这个问题了,php-fpm.conf和nginx.conf的相关项保持一致就好了。 [b]总结[/b] 关于Nginx的配置,内容实在是太多了,暂且就先总结到这里吧。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部