nginx笔记
一、安装
1.1、本地安装nginx
本地安装nginx 参考
https://nginx.org/en/download.html
https://blog.csdn.net/mao0523/article/details/122448599
C:\Users\Administrator>e:
E:\>cd ProgramFiles\nginx-1.16.1
// 启动
E:\ProgramFiles\nginx-1.16.1>start nginx
// 刷新
E:\ProgramFiles\nginx-1.16.1>nginx -s reload
// 停止
E:\ProgramFiles\nginx-1.16.1>nginx -s stop
E:\ProgramFiles\nginx-1.16.1>
报错 403 Forbidden
https://www.toutiao.com/article/6613280321607565832/
方法1、缺少index.html页面
方法2、将第一行的user www-data改为user root
1.2、常用命令
启动
sudo /usr/local/lighthouse/softwares/nginx/sbin/nginx
或
$ sudo systemctl start nginx #systemd
OR
$ sudo service nginx start #sysvinit
重载 Nginx 服务
sudo /usr/local/lighthouse/softwares/nginx/sbin/nginx -s reload
$ sudo systemctl reload nginx #systemd
或
$ sudo service nginx reload #sysvinit
停止
sudo /usr/local/lighthouse/softwares/nginx/sbin/nginx -s stop
$ sudo systemctl stop nginx #systemd
OR
$ sudo service nginx stop #sysvinit
开机自启动
$ sudo systemctl enable nginx #systemd
或
$ sudo service nginx enable #sysv init
查询状态
sudo /usr/local/lighthouse/softwares/nginx/sbin/nginx -t
ps -ef | grep nginx
$ sudo systemctl status nginx #systemd
或
$ sudo service nginx status #sysvinit
端口在使用
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
killall -9 nginx
docsify 使用nginx布署在私有服务器
// 安装docsify
npm i docsify-cli -g
docsify --version
docsify serve
注意问题:
将第一行的user www-data;,不管你那里是什么,统一改为user root,否则后面会出现403 forbidden.
server {
listen 8080;
server_name localhost;
location / {
root /home/lighthouse/shufaguiji/;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
二、配置
2.1、基础配置
# 监听端口、缓存
server {
listen 8081;
server_name localhost;
root /home/lighthouse/vuepress-calligraphy;
location ~* \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$
{
add_header Cache-Control no-cache;
add_header Pragma no-cache;
}
}
# xushufa.cn /home/lighthouse/vuepress-calligraphy
server {
listen 80;
server_name xushufa.cn;
root /home/lighthouse/vuepress-calligraphy;
#把http的域名请求转成https
return 301 https://$host$request_uri;
location ~* \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$
{
add_header Cache-Control no-cache;
add_header Pragma no-cache;
}
}
server {
#SSL 访问端口号为 443
listen 443 ssl;
#填写绑定证书的域名
server_name xushufa.cn;
#证书文件名称
ssl_certificate /usr/local/lighthouse/softwares/nginx/conf/xushufa.cn_nginx/xushufa.cn_bundle.crt;
#私钥文件名称
ssl_certificate_key /usr/local/lighthouse/softwares/nginx/conf/xushufa.cn_nginx/xushufa.cn.key;
ssl_session_timeout 5m;
#请按照以下协议配置
ssl_protocols TLSv1.2 TLSv1.3;
#请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
root /home/lighthouse/vuepress-calligraphy;
location ~* \.(css|js|png|jpg|jpeg|gif|gz|svg|mp4|ogg|ogv|webm|htc|xml|woff)$
{
add_header Cache-Control no-cache;
add_header Pragma no-cache;
}
}
日志格式化
日志格式化参考 https://blog.csdn.net/weixin_48981270/article/details/117720037
log_format json '{"timestamp":"$time_iso8601",'
'"host": "$server_addr",'
'"client": "$remote_addr",'
'"size": $body_bytes_sent,'
'"responsetime": $request_time,'
'"domain": "$host",'
'"url":"$request_uri",'
'"referer": "$http_referer",'
'"agent": "$http_user_agent",'
'"status": "$status",'
'"x_forwarded_for": "$http_x_forwarded_for"}';
2.2、日志按天保存
#!/bin/bash
# 日志按天保存
# 测试 /bin/sh /usr/local/lighthouse/softwares/nginx/sbin/cut_nginx_logs.sh
#access.log日志存放路径
log_dir="/usr/local/lighthouse/softwares/nginx/logs/"
log_name="access"
name_current_log=${log_dir}${log_name}.log
name_yesterday_log=${log_dir}${log_name}-$(date -d "yesterday" +"%Y-%m-%d").log
#复制新日志
cp $name_current_log $name_yesterday_log
#清空原日志
cat /dev/null > $name_current_log
#nginx的sbin存放路径
nginx_sbin="/usr/local/lighthouse/softwares/nginx/sbin/nginx"
echo $name_yesterday_log
#restart nginx
$nginx_sbin -s reload
/bin/sh^M: bad interpreter:没有那个文件或目录解决
因为操作系统是windows,我在windows下编辑的脚本,所以有可能有不可见字符。
脚本文件是DOS格式的, 即每一行的行尾以\n\r来标识, 其ASCII码分别是0x0D, 0x0A.
vim filename
然后用命令
:set ff? #可以看到dos或unix的字样. 如果的确是dos格式的。
然后用
:set ff=unix #把它强制为unix格式的, 然后存盘退出。
再次运行脚本。
https://blog.csdn.net/ywb201314/article/details/51909976
#打开定时任务
crontab -e
#添加定时任务
00 00 * * * /bin/sh /usr/local/lighthouse/softwares/nginx/sbin/cut_nginx_logs.sh
#":wq"保存并退出
#查看定时任务,就会看到你添加的内容了
crontab -l
crontab说明:
分钟 小时 日 月 星期 命令
* * * * * *
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
https://blog.csdn.net/sukangshen/article/details/78900147
https://blog.csdn.net/fangyuying128825/article/details/71600969
http://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
/etc/crontab