文章目录
Nginx常用的命令
-
启动
#配置环境变量 nginx -c nginx配置文件地址 #通过包管理器安装nginx,比如yum,apt-get service nginx start
-
停止
ps -ef | grep nginx #从容停止Nginx kill -QUIT 主进程号 #快速停止Nginx kill -TERM 主进程号 #强制停止Nginx pkill -9 nginx
-
重启
修改了nginx的配置文件,需要重启下nginx服务。
nginx -s reload
-
查看日志
nginx -s reopen – 重新打开日志
-
平滑重启
如果更改了配置就要重启Nginx,要先关闭Nginx再打开?不是的,可以向Nginx发送信号,平滑重启!平滑重启命令:kill -HUP 主进程号或者进程号文件路径或者使用
/usr/local/nginx/sbin/nginx -s reload
注意:修改了配置文件后最好先检查一下修改过的配置文件是否正确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
#检查指定的nginx配置文件是否正确 nginx -t -c /usr/local/nginx/conf/nginx.conf or nginx -t #检查默认的nginx配置文件 /usr/nginx/sbin/nginx -t #-t就是检查是否配置正确
Nginx基本概念
master进程和worker进程概念
- Master进程:主要用来管理worker进程,包含:接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。
- worker进程:基本的网络事件,则是放在worker进程中来处理了。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理。worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致(更多的worker数,只会导致进程来竞争cpu资源了,从而带来不必要的上下文切换。与cpu核数一样,刚好利用好计算机的资源)
Nginx文件目录结构及原理图
下图是nginx目录下的文件:
├── client_body_temp
├── conf #配置文件目录
│ ├── fastcgi.conf
│ ├── fastcgi.conf.default
│ ├── fastcgi_params
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types
│ ├── mime.types.default
│ ├── nginx.conf #主配置文件
│ ├── nginx.conf.default
│ ├── scgi_params
│ ├── scgi_params.default
│ ├── uwsgi_params
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp
├── html #初始的静态页面存放目录
│ ├── 50x.html
│ └── index.html
├── logs #日志目录
│ ├── access.log
│ ├── error.log
│ └── nginx.pid
├── proxy_temp
├── sbin #启动目录
│ └── nginx
├── scgi_temp
└── uwsgi_temp
配置文件详解
Nginx配置文件结构
配置文件实例讲解
# 运行用户
user nobody;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;
#全局错误日志及PID文件及存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
#工作模式及连接数上限
events {
#单个后台work process进程的最大并发链接数
worker_connections 1024;
}
#网页信息
http {
#设定mine类型,类型由mine。type文件定义
include mime.types;
default_type application/octet-stream;
#设定日志格式
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#日志文件存储路径/usr/local/...(nginx的安装目录)
#access_log logs/access.log main;
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,
#对于普通应用,必须设为 on,
#如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,
#以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#tcp_nopush on;
#连接超时时间
#keepalive_timeout 0;
keepalive_timeout 65;
#开启gzip压缩 如果没有开启gzip,用户访问我们的时候就是以原图来访问。
gzip on;
#小于1K的文件不适合压缩,下限是1k
gzip_min_lenth 1k;
#缓存的内存空间--4个16进制数据流
gzip_buffers 4 16k;
#http版本
gzip_http_version 1.1
#开启判断客户端和浏览器是否支持gzip
gzip_vary on;
#设定虚拟主机配置
server {
#监听80端口
listen 80;
#定义使用 访问的网址
server_name localhost;
#设置字符编码
#charset koi8-r;
#设定本虚拟主机的访问日志
#access_log logs/host.access.log main;
#默认请求,优先级最低的配置
location / {
#定义服务器的默认网站根目录位置 这个root目录其实就是/usr/local目录
root html;
# 匹配任何请求,因为所有请求都是以"/"开始
# 但是更长字符匹配或者正则表达式匹配会优先匹配
#定义首页索引文件的名称
index index.html index.htm;
}
#配置Nginx缓存
location ~.*\\.(jpg|png|gif)$ {
expires 30d; #缓存存放30天,然后自动清除
}
location ~.*\\.(css|js)? $ {
expires 1h; #缓存存放1小时
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#定义错误页面
error_page 500 502 503 504 /50x.html