Nginx一个IP如何配置多个站点的方法教程
发布时间 - 2026-01-11 03:05:55 点击率:次前言

对于Nginx,一个IP上配置多个站点还是很常见的。尤其是在开发环境上,更是如此。
下面在我的阿里云上简单的实现这样一个需求:
在一个IP上通过对端口区分来配置多个站点。
环境初始化目录一览配置站点准备添加配置文件疑难杂项fastcgi_passNginxphp-fpm的进程间通信有两种方式总结
环境
手头上正好有一台阿里云学生机,趁着没过期,就拿来用吧。
- 操作系统:centOS7
- php-fpm
- Nginx
初始化
在centos上搭建php-fpm+nginx环境不是很难,网上有很多的帖子,按照上面讲解的,把需要安装的软件安装一下就行了。
目录一览
安装完毕后,配置文件通常会在/etc/nginx目录下,我这边的内容如下:
里面的nginx.conf就是默认的配置文件了。下面简单的来看下里面的大致内容。
一般来说,除非有特别需求,我们不会修改nginx.conf文件里面的内容。现在的话,可以把这个文件当做我们的参考项。
我个人认为里面比较重要的配置项有这么几个:
- http:这个节点就代表了一个Nginx,是我们的大总管。它内部可以有多个Server配置项,代表多个站点。
- include /etc/nginx/conf.d/*.conf; 这一行虽然看起来不起眼,但是对于配置多个站点而言,及极其的重要。这点待会再讲。
- log_format: 日志的格式,这点将体现在Nginx日志记录的动作上。
- access.log: 在这个选项的第一个单词是main,就是刚才log_format定义的日志格式了。后面对于error.log 同样适用。
- Server节点:一个Server节点,包含了对一个站点的配置,这里面的同名内容将会覆盖http节点的配置,所以优先级对于一个站点而言,相对更高一点。
- include /etc/nginx/default.d/*.conf 不难看到这个配置出现在Server节点内部,所以还是对本站点配置起作用的。这个default.d目录存放的是对于所有Server节点通用性的功能,其存在的意义就是能让我们少写一些重复性的配置内容。而是抽取出来,放到一个通用的目录下。
- location的内容,待会再讲。
配置
下面进入正题,看看如何在一个IP上配置多个站点。那么首先,我们需要先创建几个文件夹,然后作为我们的多个站点。
站点准备
在home/www目录下创建两个文件夹,一个是blog一个是forum,然后里面分别放一个index.php,注意内容可以良好的区分就可以了。
添加配置文件
刚才我们也了解到,有多个站点的话其实就是多个Server节点,在nginx.conf中通过include /etc/nginx/conf.d/*.conf来引入到了http节点,所以我们只需要在/etc/nginx/conf.d/目录下创建我们特定于某个站点所需要的配置文件就可以了。
注意: 注意后缀名为.conf,不然按照include的规则,无法正确引入相关的配置文件。
你也可以像我这么做,如下:
左侧的fastcgi_param SCRIPT_FILENAME 写错了,应该是$document_root,图片上没改过来,这点明确一下就可以了。
添加完配置文件之后就可以,重启Nginx了。在CentOS上重启的命令如下:
systemctl restart nginx
如果你的是Debian系的Linux的话,也可以使用:
service nginx restart
这时,可以通过浏览器访问,看看我们的配置项到底成功了没有。
这样就成功的在一个IP上通过端口不同,配置了多个站点了。
疑难杂项
一开始刚刚接触Nginx的时候,对这个配置文件实在是摸不着头脑。那个时候,在我的印象中,php+apache才是黄金组合,没想到随着接触Nginx的时间变长,php-fpm+nginx的组合让我大开眼界。
在配置的道路上,总会有那么几个问题,一直困扰着我,下面我就总结一下,我个人认为的比较重要的问题吧。
fastcgi_pass
在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
总结来讲,有这么几点内容:
Nginx+php-fpm的进程间通信有两种方式
一个是TCP,另一个是Unix Domain Socket。
- TCP: 格式为IP:端口, 可以跨服务器。
- Unix Domain Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一个服务器上的场景。
那么,对我们来说,要怎么选择呢? 答案是取决于php-fpm的配置。有下面两种方式:
方式一:
php-fpm.conf: listen = 127.0.0.1:9000 nginx.conf:fastcgi_pass 127.0.0.1:9000
方式二:
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走的就更多了.
所以,下次就不用再纠结这个问题了,php-fpm.conf和nginx.conf的相关项保持一致就好了。
总结
关于Nginx的配置,内容实在是太多了,暂且就先总结到这里吧。
# nginx多站点配置
# nginx配置多个站点
# nginx
# 站点配置
# Linux 6下安装编译安装Nginx的步骤
# Nginx的使用经验小结
# keepalived实现nginx高可用
# Linux下nginx生成日志自动切割的实现方法
# Nginx 防止被域名恶意解析的办法
# nginx使用nginx-rtmp-module模块实现直播间功能
# Laravel 5.5官方推荐的Nginx配置学习教程
# PHP使用Nginx实现反向代理
# 关于Spring Boot WebSocket整合以及nginx配置详解
# Nginx 介绍及日常管理的详解
# 多个
# 配置文件
# 就可以
# 的是
# 几个
# 目录下
# 会在
# 一台
# 摸不着头脑
# 有两种
# 重启
# 这里面
# 大佬
# 再讲
# 是一个
# 器上
# 我就
# 如果你
# 让我
# 是在
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
javascript如何操作浏览器历史记录_怎样实现无刷新导航
企业网站制作这些问题要关注
Swift中循环语句中的转移语句 break 和 continue
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
Laravel如何使用Service Container和依赖注入?(代码示例)
微信小程序 wx.uploadFile无法上传解决办法
北京企业网站设计制作公司,北京铁路集团官方网站?
Laravel观察者模式如何使用_Laravel Model Observer配置
实例解析angularjs的filter过滤器
动图在线制作网站有哪些,滑动动图图集怎么做?
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
独立制作一个网站多少钱,建立网站需要花多少钱?
如何挑选高效建站主机与优质域名?
Win11怎么关闭专注助手 Win11关闭免打扰模式设置【操作】
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
详解Android中Activity的四大启动模式实验简述
Laravel Session怎么存储_Laravel Session驱动配置详解
公司门户网站制作流程,华为官网怎么做?
详解jQuery中基本的动画方法
Python结构化数据采集_字段抽取解析【教程】
javascript基本数据类型及类型检测常用方法小结
如何将凡科建站内容保存为本地文件?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
利用 Google AI 进行 YouTube 视频 SEO 描述优化
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
Laravel API资源类怎么用_Laravel API Resource数据转换
JS经典正则表达式笔试题汇总
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
如何用景安虚拟主机手机版绑定域名建站?
如何打造高效商业网站?建站目的决定转化率
Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试
利用JavaScript实现拖拽改变元素大小
jQuery中的100个技巧汇总
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理
如何快速搭建高效简练网站?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何快速搭建高效WAP手机网站?
Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】
html5如何实现懒加载图片_ intersectionobserver api用法【教程】
Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
文字头像制作网站推荐软件,醒图能自动配文字吗?
大学网站设计制作软件有哪些,如何将网站制作成自己app?

