如何在Nginx服务器中设置多个站点

如何在Nginx服务器中设置多个站点,第1张

这里以配置2个站点(2个域名)为例,n 个站点可以相应增加调整,假设:
IP地址:
域名1 example1com 放在 />>如果不会用salt或者ansible的话,最简单的方法是找一台发布机器,将这台机器的公钥放在其他服务器中,然后就可以执行脚本了
for
i
in
{ip
list};do
scp
nginxconf
$i:/nginxdir
&&
ssh
$i
"nginx
-s
reload";done
确保配置正确,不然报错,可在中间加上nginx
-t
验证

ngnix多站点
mkdir /etc/nginx/vhosts
每个站点一个配置文件放在/etc/nginx/vhosts
vi /etc/nginixconf
include etc/nginx/vhosts/;
/etc/initd/nginx restart

话不多说,撸起键盘就是干!正所谓知其然知其所以然,个人总结了下Nginx运行原理和配置详解,便于理解和后续复盘。

先来看这一张图。

nginx启动后会有 一个master进程和多个worker进程 。master进程用来管理worker进程, 一个worker进程处理一个请求 ,一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。 worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致 ,这里面的原因与nginx的进程模型以及事件处理模型是分不开的 ,过多的worker数,只会导致进程来竞争cpu资源,从而带来不必要的上下文切换。

PHP WEB服务器目前最佳方式之一就是: Nginx + FastCGI(解决CGI并发重复fork问题) + PHP-FPM(管理PHP-CGI进程) 。nginx是怎么做到把请求抛给PHP解释来处理的呢?这个过程又是怎么实现的呢?稍后我们来看一下参数配置。

代理,反向代理,负载均衡是Nginx常用功能。

>

说到该指令 ,首先得阐述一下什么是所谓的 “惊群问题”,可以参考 WIKI百科的解释。就Nginx的场景来解释的话大致的意思就是:当一个新网络连接来到时,多个worker进程会被同时唤醒,但仅仅只有一个进程可以真正获得连接并处理之。如果每次唤醒的进程数目过多的话,其实是会影响一部分性能的。

所以在这里,如果accept_mutex on,那么多个worker将是以串行方式来处理,其中有一个worker会被唤醒;反之若accept_mutex off,那么所有的worker都会被唤醒,不过只有一个worker能获取新连接,其它的worker会重新进入休眠状态。

用rewrite转发的话,url会发生变化的,那就用proxy_pass吧,于是添加了如下的配置:

在现有环境的nginx里添加这段配置之后,访问却始终转不过去,查看nginx日志也只能看到是404信息,并没有更多定位问题的信息。检查了许久也没找到原因,于是重新装了一台新nginx,里面只加上面这段配置,结果nginx是能够转发成功的,这说明单独来看这条location的配置是没有问题的,很有可能是现有环境nginx里的某些配置影响到了这个转发。

为了定位问题原因,我将aaaexamplecom虚拟主机下的其他配置注意注释掉来调试,最后发现当注释掉proxy_set_header Host $>

配置文件名为 nginxconf ,Linux放在目录: /usr/local/nginx/conf 、 /etc/nginx , 或 /usr/local/etc/nginx 中;Windows放在 安装目录\conf 中。 依据实际安装情况决定

nginx由配置文件中指定的指令控制模块组成。 指令分为 简单指令 块指令
简单指令 由空格分隔的名称和参数组成,并以分号 ; 结尾;
块指令 具有与简单指令相同的结构,但是是以大括号 { 和 } 包围的一组附加指令。 如果块指令在大括号内部有其他指令,则称为上下文(例如: events , >

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

原文地址:https://www.54852.com/zz/12587533.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-26
下一篇2025-08-26

发表评论

登录后才能评论

评论列表(0条)

    保存