以下脚本,可用于管理nginx中chroot权限,适用于64位与32位的Linux系统环境。
代码:
set -e
# 设置 CHROOT 目录名称
BASE="/nginx"
file="$@"
sync_suppot_libs(){
local d="$1" # JAIL ROOT
local pFILE="$2" # copy bin file libs
local files=""
local _cp="/bin/cp"
# get rid of blanks and (0x00007fff0117f000)
files="$(ldd $pFILE | awk '{ print $3 }' | sed -e '/^$/d' -e '/(*)$/d')"
for i in $files
do
dcc="${i%/*}" # get dirname only
[ ! -d ${d}${dcc} ] && mkdir -p ${d}${dcc}
${_cp} -f $i ${d}${dcc}
done
# Works with 32 and 64 bit ld-linux
sldl="$(ldd $pFILE | grep 'ld-linux' | awk '{ print $1}')"
sldlsubdir="${sldl%/*}"
[ ! -f ${d}${sldl} ] && ${_cp} -f ${sldl} ${d}${sldlsubdir}
}
usage(){
echo "Syntax : $0 /usr/local/nginx/sbin/nginx"
echo "Example: $0 /usr/bin/php5-cgi"
exit 1
}
[ $# -eq 0 ] && usage
[ ! -d $BASE ] && mkdir -p $BASE
# 复制所有文件
for f in $file
do
sync_suppot_libs "${BASE}" "${f}"
done
nginx的停止与重启,一般通过以下命令来实现:
kill -QUIT 26000
其中26000是nginx的主进程号。
每次都需要通过ps命令来查询nginx的主进程号,非常麻烦。
使用pid文件的方法,也是一个不错的方法。
什么是pid文件
pid文件就是一个纯文本文件,里面记录的是进程的pid号。
下面是一个pid文件的内容:
26032
nginx的默认pid文件
nginx使用了pid文件来记录master process的pid号,如果编译时没有指定,那它的路径就是:
<prefix>/logs/nginx.pid
其中<prefix>是nginx的安装路径。
如果你想修改默认的pid文件路径,可以在编译时加入配置。
参数如下:
./configure –-pid-path=/data/test/ngx.pid
指定后,默认的pid文件路径就更改为:
/data/test/ngx.pid
如果指定只是路径,没有pid的文件名,那么pid的文件名还是nginx.pid。
通过配置文件修改pid
除了使用默认值和通过编译时修改外,还可以通过在nginx的配置文件中修改。
如下:
这里修改的值只对使用该配置文件的nginx有效。
用PID文件停止Nginx
假设pid文件路径为/data/logs/nginx.pid
用pid文件重新加载配置文件:
nginx负载均衡与反向代理,配置内容如下:
1,设置在http段:
server 192.168.10.21:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.10.20:80 weight=1 max_fails=2 fail_timeout=30s;
proxy_cache_path /usr/local/nginx/proxy_temp levels=1:2 keys_zone=cache_one:500m inactive=1d max_size=1g;
2,设置在server段:
proxy_pass http://my_server_pool;
proxy_set_header Host $host;
proxy_cache cache_one;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_cache_valid 200 10m;
proxy_cache_valid 304 1m;
proxy_cache_valid 301 302 1h;
proxy_cache_valid any 1m;
proxy_cache_key $host$uri$is_args$args;
}
测试结果,如下图:
有关Nginx负载与反向代理的内容,还可以参考如下文章:
Nginx Proxy 代理配置图片缓存
nginx正向代理配置
nginx反向代理配置
学习Nginx反向代理实现简单负载均衡(图文)
nginx缓存html静态文件 解析php及反向代理IIS的配置
nginx1.0.0配置ngx_cache_purge实现高效反向代理的方法
nginx中配置proxy正向代理
nginx创建反向代理和虚拟主机的例子
nginx的反向代理配置与优化
nginx反向代理与varnish缓存配置
nginx反向代理与负载均衡
Nginx 反向代理的小例子
nginx反向代理与缓存详解
nginx反向代理配置一例
Nginx反向代理Nginx
nginx反向代理配置和优化
Nginx Proxy代理和图片缓存配置
nginx配置反向代理的简单示例