当前位置:首页 > 教程 > 正文内容

nginx进程有用(nginx主进程和工作进程)

2023-06-01 22:10:05教程1

nginx主进程和工作进程

在不启用web服务时,就会关闭nginx

nginx进程nobody

nginx代理出现403异常,可通过以下几个原因排查:

一、由于启动用户和nginx工作用户不一致所致

1.1查看nginx的启动用户,发现是nobody,而为是用root启动的

命令:ps aux | grep "nginx: worker process" | awk'{print $1}'

1.2将nginx.config的user改为和启动用户一致,

命令:vi conf/nginx.conf

二、缺少index.html或者index.php文件,就是配置文件中index index.html index.htm这行中的指定的文件。

1. server {

2. listen 80;

3. server_name localhost;

4. index index.php index.html;

5. root /data/www/;

6. }

如果在/data/www/下面没有index.php,index.html的时候,直接文件,会报403 forbidden。

三、权限问题,如果nginx没有web目录的操作权限,也会出现403错误。

解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决

1. chmod -R 777 /data

2. chmod -R 777 /data/www/

四、SELinux设置为开启状态(enabled)的原因。

4.1、查看当前selinux的状态。

1. /usr/sbin/sestatus

4.2、将SELINUX=enforcing 修改为 SELINUX=disabled 状态。

1. vi /etc/selinux/config

2. #SELINUX=enforcing

3. SELINUX=disabled

4.3、重启生效。reboot。

1. reboot

nginx主进程

nginx配置如下: 

 

1、定义worker进程数: 

worker_processes 10;

 

2、定义worker进程可同时服务请求数目:

worker_connections 1024;

 

3、禁止使用sendfile函数:

sendfile off;

 

4、开启空闲连接的文件检查:

linger_on_close on;

 

5、定义多个进程间通信存放文件路径及名称:

pid /var/run/nginx.pid;

 

6、定义用户和组:

user nobody nogroup;

 

7、定义worker进程数量:

worker_processes 10;

 

8、定义最大请求进程时间:

client_body_timeout 10; 

 

9、定义服务的超时时间:

send_timeout 10;

 

10、打开目录列表功能:

autoindex on;

nginx的进程结构

  Nginx会按需同时运行多个进程:一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等。Nginx主要通过“共享内存”的机制实现进程间通信。主进程以root用户身份运行,而worker、cache loader和cache manager均应以非特权用户身份运行。  在工作方式上,Nginx分为单工作进程和多工作进程两种模式。在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的;在多工作进程模式下,每个工作进程包含多个线程。Nginx默认为单工作进程模式。

nginx是单进程还是多进程

nginx 是master-worker

其中master只是 负责管理worker进程 (接受子进程信号 拉起子进程 接受用户操作关闭nginx) 不负责监听端口

php-fpm master-worker

其中master负责监控本地端口 同时 监控各种信号

nginx的进程

1,快速响应:nginx的单次请求会得到更快的响应,另一方面,在高峰期(如有数以万计的并发请求),Nginx可以比其他Web服务器更快地响应请求(官方说nginx可以支持五万并发),尤其是对静态资源的返回,更为迅速。

2,跨平台性,高扩展性:nginx的设计极具扩展性,它是由多个不同功能,不同层次,不同类型且耦合度极低的模块组成,比如HTTP模块中,还设计了HTTP过滤模块,一个正常的HTTP模块处理完请求后,会有一连串的HTTP过滤模块再对其进行过滤,我们开发一个新的HTTP模块时,可以使用HTTP核心模块 events模块 log模块等 还可以自由的复用各种过滤器模块。因此,当对某一个模块修复Bug或进行升级时,可以专注于模块自身,无须在意其他。这种低耦合度的优秀设计,造就了Nginx庞大的第三方模块,当然,公开的第三方模块也如官方发布的模块一样容易使用。

Nginx的模块都是嵌入到二进制文件中执行的,无论官方发布的模块还是第三方模块都是如此。这使得第三方模块一样具备极其优秀的性能,充分利用Nginx的高并发特性,因此,许多高流量的网站都倾向于开发符合自己业务特性的定制模块。

3,高可靠性:经过了实践的检验,功能丰富且稳定。nginx每个worker子进程相对独立,master进程在一个worker子进程出错时可以快速拉起新的worker子进程继续提供服务

4,低内存消耗

一般情况下,10 000个非活跃的HTTP Keep-Alive连接在Nginx中仅消耗2.5MB的内存,这是Nginx支持高并发连接的基础。

5,高并发处理

nginx支持的并发连接上限取决于内存,单机上万的并发量解决起来轻轻松松

6,热部署

master管理进程与worker工作进程的分离设计,使得nginx在不间断提供服务的情况下支持更新配置,更换日志文件,升级nginx可执行文件等

7,支持BSD许可协议

BSD开源协议是一个给予使用者很大自由的协议。基本上使用者可以"为所欲为",可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布

nginx主进程被kill会怎么样

启动:cd /usr/local/nginx/sbin./nginxnginx服务启动后默认的进程号会放在/usr/local/nginx/logs/nginx.pid文件cat nginx.pid 查看进程号关闭:kill -TERM pid 快速停止服务kill -QUIT pid 平缓停止服务kill -9 pid 强制停止服务重启:cd /usr/local/nginx./nginx -HUP pid./nginx -s reload

nginx主进程和工作进程的区别

我的回答:nginx worker这种工作衍生进程数,一般等于CPU的总核心数或者总核数的两倍。比如两颗4核CPU处理器,那么总核数是8。

就在nginx.conf中设置worker_processes 8;

一般进程设置成CPU核心数的1-2倍合适。

nginx进程管理

在Windows下,Nginx的启动日志可以在Nginx的安装目录下查看。具体步骤如下:

1. 打开Nginx的安装目录,一般在C:\nginx或者D:\nginx等位置。

2. 进入logs目录,可以看到access.log和error.log两个文件。

- access.log是Nginx的访问日志,记录了每个请求的详细信息,包括请求的时间、IP地址、请求的URL、响应状态码等。

- error.log是Nginx的错误日志,记录了Nginx在运行过程中出现的错误信息,包括语法错误、配置错误、启动错误等。

3. 双击打开access.log或error.log文件,可以使用记事本或其他文本编辑器查看日志内容。

4. 如果想要在启动Nginx时将启动日志输出到控制台,可以在命令行中使用以下命令启动Nginx:

```

nginx.exe -c nginx.conf -p C:\nginx -g "daemon off;"

```

其中,-c参数指定Nginx的配置文件路径,-p参数指定Nginx的安装目录,-g参数指定Nginx的全局配置,其中的"daemon off;"表示不以守护进程方式运行Nginx,将启动日志输出到控制台。

通过以上步骤,您可以在Windows下查看Nginx启动日志。

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98874147.html