目录介绍
/usr/local/nginx
├── client_body_temp # POST 大文件暂存目录
├── conf # Nginx所有配置文件的目录
│ ├── fastcgi.conf # fastcgi相关参数的配置文件
│ ├── fastcgi.conf.default # fastcgi.conf的原始备份文件
│ ├── fastcgi_params # fastcgi的参数文件
│ ├── fastcgi_params.default
│ ├── koi-utf
│ ├── koi-win
│ ├── mime.types # 媒体类型
│ ├── mime.types.default
│ ├── nginx.conf #这是Nginx默认的主配置文件,日常使用和修改的文件
│ ├── nginx.conf.default
│ ├── scgi_params # scgi相关参数文件
│ ├── scgi_params.default
│ ├── uwsgi_params # uwsgi相关参数文件
│ ├── uwsgi_params.default
│ └── win-utf
├── fastcgi_temp # fastcgi临时数据目录
├── html # Nginx默认站点目录
│ ├── 50x.html # 错误页面优雅替代显示文件,例如出现502错误时会调用此页面
│ └── index.html # 默认的首页文件
├── logs # Nginx日志目录
│ ├── access.log # 访问日志文件
│ ├── error.log # 错误日志文件
│ └── nginx.pid # pid文件,Nginx进程启动后,会把所有进程的ID号写到此文件
├── proxy_temp # 临时目录
├── sbin # Nginx 可执行文件目录
│ └── nginx # Nginx 二进制可执行程序
├── scgi_temp # 临时目录
└── uwsgi_temp # 临时目录
进程管理
master: 主进程,管理子进程
worker: 子进程,解析用户请求,并读取资源响应请求
nginx -t # 检测nginx.conf语法
nginx -s reload # 重新读取nginx.conf
nginx -s stop # 停止nginx kill -15 nginx
用什么命令启动的,就用什么方式去管理该进程
可以看到 用nginx启动无法使用systemctl命令管理,但是反过来用systemctl命令启动,可以使用nginx的命令管理
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# nginx
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Jul 31 11:15:30 iZ2zeco2fmiqbbuzq773qyZ nginx[20368]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jul 31 11:15:30 iZ2zeco2fmiqbbuzq773qyZ systemd[1]: Started The nginx HTTP and reverse proxy server.
Jul 31 11:16:07 iZ2zeco2fmiqbbuzq773qyZ systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jul 31 11:16:08 iZ2zeco2fmiqbbuzq773qyZ nginx[20424]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jul 31 11:16:08 iZ2zeco2fmiqbbuzq773qyZ nginx[20424]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jul 31 11:16:08 iZ2zeco2fmiqbbuzq773qyZ systemd[1]: Started The nginx HTTP and reverse proxy server.
Jul 31 11:16:22 iZ2zeco2fmiqbbuzq773qyZ systemd[1]: Starting The nginx HTTP and reverse proxy server...
Jul 31 11:16:22 iZ2zeco2fmiqbbuzq773qyZ nginx[20457]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Jul 31 11:16:22 iZ2zeco2fmiqbbuzq773qyZ nginx[20457]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Jul 31 11:16:22 iZ2zeco2fmiqbbuzq773qyZ systemd[1]: Started The nginx HTTP and reverse proxy server.
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# systemctl start nginx
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# nginx -s stop
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# systemctl start nginx
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# nginx -s reload
报这个错误就是说无法找到nginx的pid,所以无法stop。可以echo nginx的pid到这个/var/run/nginx.pid文件中,在执行命令就可以了
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# nginx -s stop
nginx: [error] invalid PID number "" in "/var/run/nginx.pid"
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# ps -ef |grep nginx
root 3599 1 0 16:10 ? 00:00:00 nginx: master process nginx
nginx 3628 3599 0 16:12 ? 00:00:00 nginx: worker process
root 3677 3434 0 16:19 pts/0 00:00:00 grep --color=auto nginx
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# echo 3599 > /var/run/nginx.pid
[root@iZ2zeco2fmiqbbuzq773qyZ ~]# nginx -s stop
配置文件
全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
user nginx; #配置用户或者组,默认为nobody nobody
worker_processes auto; #允许生成的进程数
error_log /var/log/nginx/error.log; #制定日志路径,级别。这个设置可以放入全局块,http块,server块。级别以此为:
DEBUG:最低级别,用于记录详细信息,通常只在调试中使用
INFO:记录正常运行时的信息
NOTICE:通知性消息,例如配置文件中的警告
WARN:警告信息,表明可能存在问题或错误
ERROR:错误消息,通常表示出现了错误
CRIT:严重错误,表示发生了严重的问题
ALERT:紧急错误,表示必须立即采取行动
pid /run/nginx.pid; #指定nginx进程运行文件存放地址
events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
events {
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; #最大连接数,默认为512
}
http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
- server块:配置虚拟主机的相关参数,一个http中可以有多个server。
- location块:配置请求的路由,以及各种页面的处理情况。
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main; # 设置访问日志的路径和格式
sendfile on; # 开启sendfile,提高传输效率
tcp_nopush on; # 开启tcp_nopush,允许发送部分数据包
tcp_nodelay on; # 开启tcp_nodelay,禁用Nagle算法,提高实时性
keepalive_timeout 65; # 客户端与服务器的连接超时时间
types_hash_max_size 4096; # MIME类型哈希表的最大大小
include /etc/nginx/mime.types; # 加载MIME类型配置文件
default_type application/octet-stream; # 默认的MIME类型
# 从/etc/nginx/conf.d目录加载模块化配置文件
# 更多信息请参考:http://nginx.org/en/docs/ngx_core_module.html#include
include /etc/nginx/conf.d/*.conf;
server {
listen 80; # 监听80端口
listen [::]:80; # 监听IPv6的80端口
server_name _; # 默认服务器名
root /usr/share/nginx/html; # 默认服务器根目录
# 加载默认服务器块的配置文件
include /etc/nginx/default.d/*.conf;
error_page 404 /404.html; # 自定义404页面
location = /404.html { } # 设置404页面的处理位置
error_page 500 502 503 504 /50x.html; # 自定义50x错误页面
location = /50x.html { } # 设置50x错误页面的处理位置
}
}
多IP虚拟主机
给网卡绑定ip
写配置文件
server {
listen 10.0.0.88:80;
server_name _;
location / {
root /www/80/;
index index.html;
}
}
修改host可以绑定域名
修改本地hosts 10.0.0.88 88.linux0224.cc 访问该域名也是可以通的,因为依然是基于绑定的socket地址匹配的该虚拟主机文件 http://88.linux0224.cc/
多端口虚拟主机
写配置文件
server {
listen 10.0.0.8:81;
server_name _;
charset utf-8;
location / {
root /www/data81/;
index index.html;
}
}
server {
listen 10.0.0.8:82;
server_name _;
charset utf-8;
location / {
root /www/data82/;
index index.html;
}
}
多域名虚拟主机
写配置
域名解析host