当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪nginx负载memcached不能返回304状态字问题的解决方法      一、问题描述: 使用nginx作为负载均衡,当访问为图片时到memcached中找,如果未找到运行apache模块将相应文件写入memcached。如果访问图片last-modified为改变,则从本地浏览器的缓存中读取相应.........
    ▪nginx屏蔽ip直接访问的方法      某些情况下需要禁止ip直接访问站点,在nginx.conf中加入如下代码:   代码如下: #禁止IP访问 server { listen 80 default; server_name _; return 500; } 将nginx服务reload 生效 即可, 这样便屏蔽了80端口ip直.........
    ▪创建nginx的启动脚本      首先,安装nginx。 代码如下: # yum install gcc openssl-devel pcre-devel zlib-devel # groupadd nginx # useradd -g nginx -s /bin/false -M nginx ./configure \   --prefix=/usr \   --sbin-path=/usr/sbin/nginx \   --conf-path=/etc/nginx/ngi.........

[1]nginx负载memcached不能返回304状态字问题的解决方法
    来源: 互联网  发布时间: 2013-12-24

一、问题描述:
使用nginx作为负载均衡,当访问为图片时到memcached中找,如果未找到运行apache模块将相应文件写入memcached。如果访问图片last-modified为改变,则从本地浏览器的缓存中读取相应文件。
但是,每次访问memcached会吧浏览器传过来的头去掉,这样造成的后果就是不能从本地缓存中读取相应文件。

二、问题解决:
经过大量的google,终于找到一个不错的解决方案——修改ngx_http_memcached_module.c源文件,在该模块中加入相应的Last-Modified头。
具体方案如下(nginx 0.8.34):
修改src/http/modules/ngx_http/memcached_module.c文件。

--- nginx-0.8.34.orig/src/http/modules/ngx_http_memcached_module.c   
+++ nginx-0.7.62.mio/src/http/modules/ngx_http_memcached_module.c   

@@ 353行 @@

代码如下:
 /* skip flags */
+ long int lm;
+ time_t ims;
+ lm = strtol(p, NULL, 10);
+ if( r->headers_in.if_modified_since == NULL) {
+     ims = 0;
+ } else {
+     ims = ngx_http_parse_time(r->headers_in.if_modified_since->value.data,
+     r->headers_in.if_modified_since->value.len);
+ }
+ ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
+ "TIEMPOS: lm=\"%d\" ims=\"%d\"", lm, ims);
+
         while (*p) {
             if (*p++ == ' ') {
                 goto length;

@@ 380行 @@

代码如下:
while (*p && *p++ != CR) { /* void */ }
+ r->headers_out.last_modified_time = lm;
         r->headers_out.content_length_n = ngx_atoof(len, p - len - 1);
         if (r->headers_out.content_length_n == -1) {
             ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
 

在Memcached-1.4.4中memcachd.c中2700行修改为
  

代码如下:

  time_t t;
    time(&t);
    flags = t;

    if (! (flags
           && safe_strtol(tokens[3].value, &exptime_int)
           && safe_strtol(tokens[4].value, (int32_t *)&vlen))) {
        out_string(c, "CLIENT_ERROR bad command line format");
        return;
}


    
[2]nginx屏蔽ip直接访问的方法
    来源: 互联网  发布时间: 2013-12-24

某些情况下需要禁止ip直接访问站点,在nginx.conf中加入如下代码:
 

代码如下:
#禁止IP访问
server
{
listen 80 default;
server_name _;
return 500;
}

将nginx服务reload 生效 即可, 这样便屏蔽了80端口ip直接访问。

您可能感兴趣的文章:
nginx下禁止直接以IP访问的方法
两个nginx小技巧(禁止以ip方式访问、禁止列出目录)
如何在nginx中配置ip直接访问的默认站点
设置nginx禁止通过IP访问服务器的方法
nginx禁止IP访问及未绑定的域名跳转的配置方法
nginx禁止直接以IP访问网站的方法


    
[3]创建nginx的启动脚本
    来源: 互联网  发布时间: 2013-12-24

首先,安装nginx。

代码如下:

# yum install gcc openssl-devel pcre-devel zlib-devel

# groupadd nginx
# useradd -g nginx -s /bin/false -M nginx

./configure \
  --prefix=/usr \
  --sbin-path=/usr/sbin/nginx \
  --conf-path=/etc/nginx/nginx.conf \
  --error-log-path=/var/log/nginx/error.log \
  --http-log-path=/var/log/nginx/access.log \
  --pid-path=/var/run/nginx/nginx.pid  \
  --lock-path=/var/lock/nginx.lock \
  --user=nginx \
  --group=nginx \
  --with-http_ssl_module \
  --with-http_flv_module \
  --with-http_stub_status_module \
  --with-http_gzip_static_module \
  --http-client-body-temp-path=/var/tmp/nginx/client/ \
  --http-proxy-temp-path=/var/tmp/nginx/proxy/ \
  --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \
  --with-pcre

make && make install

创建启动脚本,放在/etc/init.d/nginx下:
 

代码如下:
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemon
#
# chkconfig: - 85 15
# description: Nginx is an HTTP(S) server, HTTP(S) reverse \
# proxy and IMAP/POP3 proxy server
# processname: nginx
# config: /etc/nginx/nginx.conf
# config: /etc/sysconfig/nginx
# pidfile: /var/run/nginx.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
 
nginx="/usr/sbin/nginx"
prog=$(basename $nginx)
 
NGINX_CONF_FILE="/etc/nginx/nginx.conf"
 
[ -f /etc/sysconfig/nginx ] && . /etc/sysconfig/nginx
 
lockfile=/var/lock/subsys/nginx
 
make_dirs() {
   # make required directories
   user=`nginx -V 2>&1 | grep "configure arguments:" | sed 's/[^*]*--user=\([^ ]*\).*/\1/g' -`
   options=`$nginx -V 2>&1 | grep 'configure arguments:'`
   for opt in $options; do
   if [ `echo $opt | grep '.*-temp-path'` ]; then
   value=`echo $opt | cut -d "=" -f 2`
   if [ ! -d "$value" ]; then
   # echo "creating" $value
   mkdir -p $value && chown -R $user $value
   fi
   fi
   done
}
 
start() {
[ -x $nginx ] || exit 5
[ -f $NGINX_CONF_FILE ] || exit 6
make_dirs
echo -n $"Starting $prog: "
daemon $nginx -c $NGINX_CONF_FILE
retval=$?
echo
[ $retval -eq 0 ] && touch $lockfile
return $retval
}
 
stop() {
echo -n $"Stopping $prog: "
killproc $prog -QUIT
retval=$?
echo
[ $retval -eq 0 ] && rm -f $lockfile
return $retval
}
 
restart() {
configtest || return $?
stop
sleep 1
start
}
 
reload() {
configtest || return $?
echo -n $"Reloading $prog: "
killproc $nginx -HUP
RETVAL=$?
echo
}
 
force_reload() {
restart
}
 
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
status $prog
}
 
rh_status_q() {
rh_status >/dev/null 2>&1
}
 
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart|configtest)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
exit 2
esac

加入服务中:
chkconfig --add nginx
chkconfig nginx on


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3