在开始修改nginx设置之前,我们首先做一些准备工作,让我们修改起来更加简单
一、预备工作
1.设置文件中参数高亮显示
mkdir ~/.vim
cp -r /root/nginx-1.14.2/contrib/.vim/* ~/.vim
如上图这样我们就可以更好的编辑nginx的配置文件了
2.启动脚本
这里我们需要找一个模板,我们拷贝httpd的
cp /usr/lib/systemd/system/httpd.service /etc/systemd/system/nginx.service
vim /etc/systemd/system/nginx.service
修改如下
[Unit]
Description=The nginx HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
然后我们试一下
systemctl daemon-reload ##重新加载systemd策略
systemctl start nginx
二、设置文件简介
nginx的配置文件在
vim /usr/local/nginx/conf/nginx.conf
nginx配置文件主要分为六个区域:
- main(全局设置)
- events(nginx工作模式)
- http(http设置)
- sever(主机设置)
- location(URL匹配)
- upstream(负载均衡服务器设置)
1.main(全局设置)
user nobody;
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;
- user:来指定Nginx Worker进程运行用户以及用户组,默认由nobody账号运行,这里我们可以新建nginx用户和组来运行子进程
useradd -s /sbin/nologin nginx ##为了安全,让nginx用户禁止登陆系统
- worker_processes:设置nginx子进程的数量,可以设置为auto,但建议与cpu的核心数一致,下面指令查看cpu信息
lscpu ##显示cpu的信息
- error_log:用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
/usr/local/nginx/logs使存放日志的地方
如上图,access.log是访问成功的日志,error.log是访问失败的日志,nginx.pid是nginx的pid
这里我们应该考虑日志的截断,因为日志很大,回占用很多的硬盘空间
我们可以使用一个最简单的截断例子来说明
mv access.log `date +%F -d -1days`_access.log ##这样我们就可以把日志截断为时间开头的日志
但是你会发现没有了access.log文件,那么我们接下来如何记录呢
/usr/local/nginx/sbin/nginx -s reopen
这样日志就重新存在了
- pid:显示pid信息的文件路径
2.event模块(nginx工作模式)
events {
use epoll; #Linux平台
worker_connections 1024;
}
- use:用来指定Nginx的工作模式。Nginx支持的工作模式有select、poll、kqueue、epoll、rtsig和/dev/poll。其中select和poll都是标准的工作模式,kqueue和epoll是高效的工作模式,不同的是epoll用在Linux平台上,而kqueue用在BSD系统中,对于Linux系统,epoll工作模式是首选。
- worker_connections:用于定义Nginx每个进程的最大连接数,即接收前端的最大请求数,默认是1024。最大客户端连接数由worker_processes和worker_connections决定,即Max_clients=worker_processes*worker_connections,在作为反向代理时,Max_clients变为:Max_clients = worker_processes * worker_connections/4。 进程的最大连接数受Linux系统进程的最大打开文件数限制,设置改完不会立即生效,需要输入下面的指令
ulimit -n 65536
3.http模块
这个模块分开解释参数,因为server和location比较重要
1)主模块
http {
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"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
- include:设定文件的mime类型,类型在配置文件目录下的mime.type文件定义,来告诉nginx来识别文件类型
- default_type:设定了默认的类型为二进制流,也就是当文件类型未定义时使用这种方式,例如没有配置php,当遇到php的网页时,会默认下载php文件
- log_format:设置日志的格式,和记录哪些参数,这里设置为main,刚好用于access_log来纪录这种类型
- access_log:用来纪录每次的访问日志的文件地址,后面的main是日志的格式样式,对应于log_format的main
- sendfile:用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞
- keepalive_timeout:设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接
2)子模块server
server模块是http的子模块,它用来定一个虚拟主机
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
- server:标志定义虚拟主机开始
- listen:用于指定虚拟主机的服务端口
- server_name:用来指定IP地址或者域名,多个域名之间用空格分开
- charset:用于设置网页的默认编码格式
- access_log:用来指定此虚拟主机的访问日志存放路径,最后的main用于指定访问日志的输出格式。
3)子模块location
location模块是nginx中用的最多的,也是最重要的模块,负载均衡啊、反向代理、虚拟域名都与它相关,location 根据它字面意思就知道是来定位的,定位URL,解析URL,所以,它也提供了强大的正则匹配功能,也支持条件判断匹配,用户可以通过location指令实现Nginx对动、静态网页进行过滤处理。
location / {
root html;
index index.html index.htm;
}
- location /:表示匹配访问根目录
- root:表示在这整个server虚拟主机内,全部的root web根目录,可以是相对路径(相对路径是相对于nginx的安装目录),也可以是绝对路径。
- index:全局定义访问的默认首页地址。
还有一些负载均衡模块日后再说~
ok~