Nginx记忆的笔记怕忘记~另外出售erbi.me域名~有需要的吗?
基本的操作
启动、停止nginx
cd /usr/local/nginx/sbin/
启动
./nginx
加载制定配置文件
./nginx -c xxx.conf(参数-c 指定配置文件路径,如果不加-c参数,Nginx会默认加载其安装目录的conf子目录的nginx.conf文件)
测试Nginx配置是否正确
./nginx -t
nginx服务停止
./nginx -s stop //kill -9 pid
./nginx -s quit
优雅重启
./nginx -s reload
查看nginx的进程号
ps -ef | grep nginx
杀死
killall -9 nginx
虚拟主机配置
首先下面是一个最简单的虚拟主机配置:
http{ server{ listen 80; server_name _ *; access_log logs/server_name.access.log combined; location / { index index.html; root /data0/htdocs/htdosc_servername; } } }
所以,和apche一样,可以配置多种类型虚拟主机:
1.基于IP的
http{ server{ #监听的ip和端口 listen 192.168.1.88:80; #主机名称 server_name 192.168.1.88; #访问的日志存放路径 access_log logs/server1.access.log combined; location / { index index.html; root /data0/htdocs/server1; } } server{ #监听的ip和端口 listen 192.168.1.89:80; #主机名称 server_name 192.168.1.89; #访问的日志存放路径 access_log logs/server2.access.log combined; location / { index index.html; root /data0/htdocs/server2; } } server{ #监听的ip和端口 listen 192.168.1.90:80; #主机名称 server_name 192.168.1.90; #访问的日志存放路径 access_log logs/server3.access.log combined; location / { index index.html; root /data0/htdocs/server3; } } }
2.基于域名的
http{ server{ #监听的ip和端口 listen 80; #主机名称 server_name 199604.com; #访问的日志存放路径 access_log logs/199604.com.access.log combined; location / { index index.html; root /data0/htdocs/199604.com; } } server{ #监听的ip和端口 listen 80; #主机名称 server_name guoliangjun.com; #访问的日志存放路径 access_log logs/guoliangjun.com.access.log combined; location / { index index.html; root /data0/htdocs/guoliangjun.com; } } server{ #监听的ip和端口 listen 80; #主机名称 server_name erbi.me; #访问的日志存放路径 access_log logs/erbi.me.access.log combined; location / { index index.html; root /data0/htdocs/erbi.me; } } }
3.基于端口的
端口就是把监听的端口更改一下就OK了
日志定时切割
首先需要认识一下 access_log的语法:
access_log path[format [buffer=size|off]]
acess_log off;关闭日志
如果需要使用默认的combined格式记录日志:
access_log /logs/guoliangjun.com.access.log;
或者
access_log /logs/guoliangjun.com.access.log combined;
认识access_log参数之后,那么就是解释一下Nginx是不支持像Apache一样使用cronolog来轮转日志,但是可以手动/自动(定时shell)采用实现日志文件日期的切割
先手动:
mv /data/logs/access.log /data/logs/20190824.log
kill -USR1 Nginx主进程号(kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`)
Nginx主进程号我们是可以用cat pid文件获取到进程号哒~
后shell定时执行:
设置一个定时任务,每天凌晨00:00开始备份昨天的日志,然后重新开启一个新的日志文件。具体实现如下:
vi nginx_logbak.sh
#!/bin/bash YESTERDAY=$(date -d "yesterday" +"%Y-%m-%d") LOGPATH=/usr/local/nginx/logs/ PID=${LOGPATH}nginx.pid mv ${LOGPATH}access.log ${LOGPATH}access-${YESTERDAY}.log mv ${LOGPATH}error.log ${LOGPATH}error-${YESTERDAY}.log kill -USR1 `cat ${PID}`
变更shell脚本为可执行文件,并将脚本设置为定时任务启动脚本,放入crontab中。
chmod +x nginx_logbak.sh
crontab -e
0 0 * * * /bin/bash /usr/local/nginx/logs/nginx_logbak.sh
Nginx自动列目录配置
有时候打开一个页面自动会显示列目录,但前提可能需要指定的index页面不存在才行,我们只需要加载autoindex即可:
location / { index index.html; root /data0/htdocs/htdosc_servername; autoindex on; }
负载均衡的http upstream
upstream主要提供了简单方法来实现在轮询和客户端IP之间的后端服务器负载均衡,也可以对服务器进行监控检查,简单例子如下:
#user nobody; worker_processes 1; events { worker_connections 1024; } http { upstream myip{ server 121.42.102.97 weight=2; server 111.161.64.40 max_fails=3 fail_timeout=30s; } server{ listen 80; location / { proxy_pass http://myip; } } }