环境:一台nginx服务器 两台httpd服务器
需要 安装的软件包:
(1):准备解压缩的包:
(2):安装nginx及安装缺少的依赖包:
重启服务查看:(nginx安装完成)
(3):编写 nginx 服务脚本:
#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx Service Control Script
PROG="/usr/local/nginx1.10/sbin/nginx"
PIDF="/usr/local/nginx1.10/logs/nginx.pid"
case "$1" in
start)
netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
if [ $? -eq 0 ]
then
echo "Nginx service already running."
else
$PROG -t &> /dev/null
if [ $? -eq 0 ] ; then
$PROG
echo "Nginx service start success."
else
$PROG -t
fi
fi
;;
stop)
netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
if [ $? -eq 0 ]
then
kill -s QUIT $(cat $PIDF)
echo "Nginx service stop success."
else
echo "Nginx service already stop"
fi
;;
restart)
$0 stop
$0 start
;;
status)
netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
if [ $? -eq 0 ]
then
echo "Nginx service is running."
else
echo "Nginx is stop."
fi
;;
reload)
netstat -anplt |grep ":80" &> /dev/null && pgrep "nginx" &> /dev/null
if [ $? -eq 0 ]
then
$PROG -t &> /dev/null
if [ $? -eq 0 ] ; then
kill -s HUP $(cat $PIDF)
echo "reload Nginx config success."
else
$PROG -t
fi
else
echo "Nginx service is not run."
fi
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
(4):配置负载均衡与健康检查:
严格来说,nginx 自带是没有针对负载均衡后端节点的健康检查的,但是可以通过默认自带 的 ngx_http_proxy_module 模块和 ngx_http_upstream_module 模块中的相关指令来完成 当后端节点出现故障时,自动切换到下一个节点来提供访问。
1):修改主配置文件:
检查完记得:
网页验证:(负载均衡)
3:Nginx的proxy缓存使用
缓存也就是将 js、css、image 等静态文件从后端服务器缓存到 nginx 指定的缓存目录下,既 可以减轻后端服务器负担,也可以加快访问速度,但这样缓存及时清理成为了一个问题,所 以需要 ngx_cache_purge 这个模块来在过期时间未到之前,手动清理缓存。 proxy 模块中常用的指令时 proxy_pass 和 proxy_cache. nginx 的 web 缓存功能的主要是由 proxy_cache、fastcgi_cache 指令集和相关指令集完成, proxy_cache 指令负责反向代理缓存后端服务器的静态内容,fastcgi_cache 主要用来处理 FastCGI 动态进程缓存
#$upstream_cache_status 记录缓存命中率。
相关选项说明:
proxy_buffering on; 代理的时候,开启或关闭缓冲后端服务器的响应。 当开启缓冲时,nginx 尽可能快地从被代理的服务器接收响应,再将它存入缓冲区中。 proxy_temp_path : 缓存临时目录。后端的响应并不直接返回客户端,而是先写到一个临 时文件中,然后被 rename 一下当做缓存放在 proxy_cache_path 。0.8.9 版本以后允许 temp 和 cache 两个目录在不同文件系统上(分区),然而为了减少性能损失还是建议把它们设成 一个文件系统上。
proxy_cache_path: 设置缓存目录,目录里的文件名是 cache_key 的 MD5 值。 levels=1:2 keys_zone=my-cache:50m 表示采用 2 级目录结构,第一层目录只有一个字符,是 由 levels=1:2 设置,总共二层目录,子目录名字由二个字符组成。Web 缓存区名称为 my-cache, 内存缓存空间大小为 100MB,这个缓冲 zone 可以被多次使用。文件系统上看到的缓存文件 名类似于 /usr/local/nginx1.10/proxy_cache/c/29/b7f54b2df7773722d382f4809d65029c 。 inactive=600 max_size=2g 表示 600 分钟没有被访问的内容自动清除,硬盘最大缓存空间为 2GB,超过这个大学将清除最近最少使用的数据。 proxy_cache : 引用前面定义的缓存区 my-cache proxy_cache_key :定义如何生成缓存的键,设置 web 缓存的 key 值,nginx 根据 key 值 md5 哈希存储缓存
proxy_cache_valid : 为不同的响应状态码设置不同的缓存时间,比如 200、302 等正常结果 可以缓存的时间长点,而 404、500 等缓存时间设置短一些,这个时间到了文件就会过期, 而不论是否刚被访问过。
add_header 指令来设置 response header, 语法: add_header name value; $upstream_cache_status 这个变量来显示缓存的状态,我们可以在配置中添加一个 http 头 来显示这一状态,
$upstream_cache_status 包含以下几种状态: ·MISS 未命中,请求被传送到后端 ·HIT 缓存命中 ·EXPIRED 缓存已经过期请求被传送到后端 ·
UPDATING 正在更新缓存,将使用旧的应答 ·
STALE 后端将得到过期的应答
expires : 在响应头里设置
Expires:或 Cache-Control:max-age,返回给客户端的浏览器缓存失 效时间。
重启服务,网页验证
修改版本号:
网页成功访问后,如我们输入一个不存在的 地址会显示如下图;(那么我们的nginx版本号就显示出来这会给我们带来安全隐患);优化如下:
修改步骤:
重新执行configure 和make 不要使用make install