注意:相关配置的首字母应为小写,我是word转移的,所有就不一一改了!自行更改吧!
安装Nginx
1、下载对应安装包
- 去官网http://nginx.org/en/download.html wget下载最新的包
2、安装依赖环境
-
安装gcc环境 Yum install gcc-c++
-
安装PCRE库,用于解析正则表达式 Yum install -y pcre pcre-devel
-
Zlib压缩和解压缩依赖 Yum install -y zlib zlib-devel
-
SSL安装的加密的套接字协议层,用于HTTP安全传输,也就是https Yum install -y openssl openssl-devel
3、./configure – 对应安装地址
--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 设定scgil临时目录
4、make && make install
5、进入sbin目录
启动nginx ./nginx
停止 ./nginx -s stop
重新加载 ./nginx -s reload
注意事项
1、相应端口
2、关闭防火墙或input开启某个端口 配置核心配置文件
配置核心配置文件
- 1、设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认
nobody user root;
- 2、worker进程工作数设置,一般来说cpu有几个,就设置几个,或者设置为N-1也行
worker_processes 1;
- 3、nginx日志级别debug | info | notice | warn | error | crit | alert |
emerg,错误级别从左到右越来越大 - 4、设置nginx进程pid pid logs/nginx.pid;
- 5、设置工作模式
events {
#默认使用
epoll use epoll;
#每个worker允许连接的客户端最大连接数
worker_connections 10240;
}
- 6、http是指令块,针对http网络传输的一些指令配置
http{ }
- 7、include引入外部配置,提高可读性,避免单个配置文件过大
include mime.types;
- 8、设定日志格式,main为定义的格式名称,如此access_log就可以直接使用这个变量了
$remote_addr 客户端ip
$remote_user 远程客户端用户名,一遍为:’-’
$time_local 时间和时区
$request 请求的url以及method
$status 响应状态码
$body_bytes_send 响应客户端内容字节数
$http_referer 记录用户从哪个链接跳转过来
$http_user_agent 用户所使用的代理,一般来时都是浏览器
$http_x_forwarded_for 通过代理服务器来记录客户端的ip
- 9、sendfile 使用高效文件传输,提升传输性能,启用后才能使用tcp_nopush,是指当数据表累积一定大小后才发现,提高了效率
Sendfile on;
Tcp_nopush on;
10、keepalive_timeout 设置客户端与服务器请求的超时时间,保证客户端多次请求的时候不会重复建立新的连接,节约资源损耗
Keepalive_timeout 65;
- 11、gzip启用压缩,html、js、css压缩后传输会更快
Gzip on;
- 12、server可以在http指令块中设置多个虚拟主机
Listen 监听端口
server_name localhost、ip、域名
Location 请求路由映射,匹配拦截
Root 请求位置
Index 首页设置
Nginx日志切割-手动
- 现有的日志都会存在access.log文件中,但是随着时间的推移,这个文件的内容会越来越多,体积会越来越大,不便于运维人员查看,所以我们可以通过把这个文件大的日志文件切割为多份,按一定时间切割
- 1、创建一个shell可执行文件:cut_my_log.sh
#!/bin/bash
LOG_PATH=”/val/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添加可执行的权限
-
3、测试日志./cut_my_log.sh
-
4、添加定时任务
Yum install crontabs Crontab -e
添加新任务 */1 * * * * /usr/local/nginx/sbin/cut_my_log.sh
重启定时任务 service crond restart
-l 查看任务列表
跨域添加
#允许跨域请求的域
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie
add_header 'Access-Control-Allow-Credentials' *;
#允许请求的方法
add_header 'Access-Control-Allow-Methods' *;
#允许请求header add_header 'Access-Control-Allow-Headers' *;
Nginx防盗链配置支持
#对源站点验证
Valid_referers *.imooc.com;
#非法引入会进入下方判断
If($invalid_referer){
Return 404;
}
Osi网络模型
Nginx属于七层
可以百度----
配置upstream max_conns
- 限制每台server的连接数,用于保护避免过载,可起到限流作用
worker_processess 1;//便于测试查看连接数
Upstream tomcats{
Server ip:port max_conns=2;
}
- Slow_start 商业版,需要付费 ,
当一个服务器从不健康变为健康或从不可用到可用时设置过多长时把服务器的权重从0恢复为原设置的值。默认值为1,即是被禁用的。
Upstream tomcats{
Server ip:port
slow_start=60s;
}
该参数不能使用在hash 和 random load balancing 中
如果在upstream 中只有一台server ,则无效
Down、backup :down用于标记服务节点不可以;backup表示当前服务器节点是备用机,只有在其他的服务器都宕机以后,自己才会加入到集群,被用户访问到
Backup 参数不能使用在hash和random load balancing中
Max_fails、fail_timeout : max_fails 表示失败几次,则标记server已宕机,提出上游服务,fail_timeout 表示失败的重启时间
Max_faild=2 fail_timeout=15s 则代表在15秒内请求某一server失败达到2次后,则认为该server已经挂了或者宕机,随后再过15秒,这15秒内不会有新的请求到达刚刚挂掉的节点上,而是会请求到正常运作的server,15秒会再有心情求尝试连接挂掉的server,如果还是失败,重复上一过程,知道恢复。
- Keepalived 提高吞吐量
Keepalived:设置长连接处理的数量
Proxy_http_version:设置长连接http版本1.1
Proxy_set_header:清除connection header 信息
Upstream tomcats{
Server ip:port;
Keepalived:32;
}
Server{
Listen 80;
Server_name 域名;
Location / {
Proxy_pass http://tomcats;
Proxy_http_version 1.1;
Proxy_set_header Connection “”;
}
}
- Ip_hash:可以保证用户访问可以请求到上游服务中的固定的服务器,前提是用户ip没有发生更改,使用ip_hash的注意点:不能把后台服务器直接移除,只能标记
down Upstream tomcats{
Ip_hash;
Server ip:port;
}
此哈希算法 -- 比如3(a)台服务器求于,用户排列依次%a 计算,用户1%3=1,用户2%3=2 ,用户3%3=0,这里计算机排序是012,所以各个服务器都可以请求到,是根据ip前3个数字计算,如192.1.1.172,是根据192.1.1计算,如果所以服务器都一样,就只能访问到第一台,详细可以具体看nginx的源码
- Url_hash与least_conn:根据每次请求的url地址,hash后访问到固定的服务器节点
Upstream tomcats{
#url hash Hash
$request_uri;
#最少连接数
#least_conn
Server ip:port
}
Url 是比较推荐的,更加不同的url固定访问服务器
Nginx的缓存
1、浏览器缓存
加速用户访问,提升单个用户(浏览器访问者)体验,缓存在本地
2、nginx缓存
缓存在nginx端,提升所有访问到nginx者一端的用户
提升访问上游(upstream)服务器的速度
用户访问任然会产生流量
Location /files{
Alias /home/imooc; Expires 10s;
}
通过设置expires设置间隔时间
去除缓存add_header Cache-Control no-cache
Nginx的反向代理缓存
#proxy_cache_path 设置缓存目录
#keys_zone 设置共享内存以及占用空间大小
#max_size 设置缓存大小
#inactive 超时此时间则被清理
#use_temp_path 临时目录,使用后会影响nginx性能
Proxy_cache_path /usr/local/nginx/upstream_cache keys_zone=mycache:5m max_size=1g inactive=1m use_temp_path=off;
Location /{
...
#启动缓存,和keys_zone一致
Proxy_cache mycache;
#针对200和304状态码缓存时间为8小时
Proxy_cache_valid 200 304 8h;
}