大部分来源学习课程 慕课网 java架构师
安装Nginx
去官网http://nginx.org/下载对应的nginx包,推荐使用稳定版本
上传nginx到linux系统
安装依赖环境
(1)安装gcc环境
输入: yum install gcc-c++
(2)安装PCRE库,用于解析正则表达式
输入:yum install -y pcre pcre-devel
(3)zlib压缩和解压缩依赖,
输入:yum install -y zlib zlib-devel
(4)SSL 安全的加密的套接字协议层,用于HTTP安全传输,也就是https
输入:yum install -y openssl openssl-devel
解压,需要注意,解压后得到的是源码,源码需要编译后才能安装
输入:tar -zxvf nginx-1.16.1.tar.gz
编译之前,先创建nginx临时目录,如果不创建,在启动nginx的过程中会报错
输入:mkdir /var/temp/nginx -p
在nginx目录,输入如下命令进行配置,目的是为了创建makefile文件
输入:
./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
注: 代表在命令行中换行,用于提高可读性
配置命令:
命令 解释
–prefix 指定nginx安装目录
–pid-path 指向nginx的pid
–lock-path 锁定安装文件,防止被恶意篡改或误操作
–error-log 错误日志
–http-log-path http日志
–with-http_gzip_static_module 启用gzip模块,在线实时压缩输出数据流
–http-client-body-temp-path 设定客户端请求的临时目录
–http-proxy-temp-path 设定http代理临时目录
–http-fastcgi-temp-path 设定fastcgi临时目录
–http-uwsgi-temp-path 设定uwsgi临时目录
–http-scgi-temp-path 设定scgi临时目录
make编译
输入: make
安装
输入: make install
进入sbin目录启动nginx
输入:./nginx
停止:./nginx -s stop
重新加载:./nginx -s reload
打开浏览器,访问虚拟机所处内网ip即可打开nginx默认页面,显示如下便表示安装成功:
注意事项:
如果在云服务器安装,需要开启默认的nginx端口:80
如果在虚拟机安装,需要关闭防火墙
本地win或mac需要关闭防火墙
///
配置静态页面显示
cd .. 到 nginx页面 进入到 html
vim index.html
i 进入编写
:wq
查看进程
ps -ef| grep nginx
查看日志
../sbin/nginx -t
重启
../sbin/nginx -s reload
手动切割日志:
1 创建一个shell可执行文件:cut_my_log.sh,内容为
#!/bin/bash
LOG_PATH="/var/log/nginx/" #地址在的位子
RECORD_TIME=$(date -d "yesterday" +%Y-%m-%d+%H:%M) # 定义时间
PID=/var/run/nginx/nginx.pid
mv ${LOG_PATH}/access.log ${LOG_PATH}/access.${RECORD_TIME}.log
mv ${LOG_PATH}/error.log ${LOG_PATH}/error.${RECORD_TIME}.log
#向Nginx主进程发送信号,用于重新打开日志文件
kill -USR1 `cat $PID`
2 为cut_my_log.sh添加可执行的权限:
chmod +x cut_my_log.sh
3 测试日志切割后的结果:
./cut_my_log.sh
Nginx 日志切割-定时
使用定时任务
安装定时任务:
yum install crontabs
crontab -e 编辑并且添加一行新的任务:
*/1 * * * * /usr/local/nginx/sbin/cut_my_log.sh
重启定时任务:
service crond restart
附:常用定时任务命令:
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
crontab -e // 编辑任务
crontab -l // 查看任务列表
定时任务表达式:
Cron表达式是,分为5或6个域,每个域代表一个含义,如下所示:
分 时 日 月 星期几 年(可选)
取值范围 0-59 0-23 1-31 1-12 1-7 2019/2020/2021/…
常用表达式:
每分钟执行:
*/1 * * * *
每日凌晨(每天晚上23:59)执行:
59 23 * * *
每日凌晨1点执行:
0 1 * * *
搭建静态资源服务器
重启服务器
建文件 huey.conf
server{
listen 91;
server_name localhost;
location / {
root /home/;
index test.html;
}
}
1 先检测文件夹
../sbin/nginx -t
2 重新启动
../sbin/nginx -s reload
配置 文件启动到 nginx.conf
include huey.conf;
也需要重启
访问多个 继续访问图片
server{
listen 91;
server_name localhost;
location / {
root /home/;
index test.html;
}
location /imooc {
root /home ;
}
}
后续操作保存 重启 跟上面是一致的
另一种形式配置 别名
server{
listen 91;
server_name localhost;
location / {
root /home/;
index test.html;
}
### static 别名 随便取的
location /static {
root /home ;
alias /home/imooc
}
}
root 与 alias
假如服务器路径为:/home/imooc/files/img/face.png
root 路径完全匹配访问
配置的时候为:
location /imooc {
root /home
}
用户访问的时候请求为:url:port/imooc/files/img/face.png
alias 可以为你的路径做一个别名,对用户透明
配置的时候为:
location /hello {
alias /home/imooc
}
用户访问的时候请求为:url:port/hello/files/img/face.png,如此相当于为目录imooc做一个自定义的别名。
Gzip压缩提升请求速率
在 nginx.conf 有个 gzip 目的 :提高传输效率,节约带宽
#限制最小压缩,小于 1字节不压缩
gzip_min_length 1;
#定义压缩级别 文件越大,压缩越大,cup使用多
gzip_comp_level 3;
#定义压缩文件类型
gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png application/json ;
重新启动 nginx
location 的匹配规则解析
空格:默认匹配,普通匹配
location / {
root /home;
}
=:精确匹配
location = /imooc/img/face1.png {
root /home;
}
~*:匹配正则表达式,不区分大小写
#符合图片的显示
location ~ \.(GIF|jpg|png|jpeg) {
root /home;
}
~:匹配正则表达式,区分大小写
#GIF必须大写才能匹配到
location ~ \.(GIF|jpg|png|jpeg) {
root /home;
}
^~:以某个字符路径开头
location ^~ /imooc/img {
root /home;
}
Dns域名解析
nginx跨域配置支持
#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET/POST/PUT/DELETE
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;
Nginx 防盗链配置支持
#对源站点验证
valid_referers *.imooc.com;
#非法引入会进入下方判断
if ($invalid_referer) {
return 404;
}