关于Nginx的资料
分页: 1/3 第一页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]
参考《使用163开源镜像升级你的Centos

如果设置源服务器为163的,你有很多服务器需要处理,那建立一个本地缓存服务器是一个很好的选择,更新一次后,那之后的更新速度可就快的要命啊。。

配置nginx为类似如下样子,自行修改自己的需求:

upstream backend {
  server mirrors.163.com:80 ;
}

server {
  #server_name  www.aslibra.com;
  server_name  mirrors.aslibra.com;
  set $index 'index.htm';
  set $store_file $request_filename;
  #root    /Data/www.aslibra.com;
  root    /Data/mirrors/mirrors.163.com;
  if ($uri ~ /$ ){
    set $store_file $request_filename$index;
  }
  location /centos/ {
    index index.htm;
    proxy_store on;
    proxy_temp_path /Data/mirrors/tmp;
    proxy_set_header Host mirrors.163.com;
    proxy_store_access user:rw group:rw all:rw;
    if ( !-e $store_file ) {
      proxy_pass http://backend;
    }
  }
}


yum的配置可以如下:

[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aslibra.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[updates]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.aslibra.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[addons]
name=CentOS-$releasever - Addons
baseurl=http://mirrors.aslibra.com/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.aslibra.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5

[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.aslibra.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5


就这样OK了!
Tags: , , ,
以下几个是解决安装过程碰到的pcre和md5的问题

yum -y install pcre-devel openssl openssl-devel


其中pcre-devel是解决pcre的,剩余两个解决md5的,很简便。

参考阅读:the HTTP rewrite module requires the PCRE library
Tags: ,
曾经几次发生404的问题导致服务器请求很慢,这个问题一直都还没有明确原因。
为什么404错误会导致连接数特别高?

引用
Active connections: 1118
server accepts handled requests
48870809 48870809 48557219
Reading: 1116 Writing: 2 Waiting: 0

Active connections: 17
server accepts handled requests
50852281 50852281 50537511
Reading: 16 Writing: 1 Waiting: 0


上面是nginx在404错误时,和修复404错误之后的变化,404错误居然能够产生有1k多的连接。
更换为lighttpd也是一样,顶不住。。
reading的数量特别高,导致访问其它服务特别慢。汗一把。。有空再细看资料,大家平时多注意。。。
Tags:
由于要rewrite一个地址从
/mag/xx/xxx/ -> /m/xxx
但原先 /mag/xx/more/ 要保留
这就得写一个比较奇特的正则了,尝试了比较多的写法也没成功

最先想的是:

location ~* ^/mag/[^/]+/[^(more)]+/ {
  rewrite ^/mag/[^/]+/(.*) /m/$1 permanent;
}


[]的写法并不凑效,里面是匹配单个字符的,这样无效,匹配不了

还是小范同学不错,研究的深入,提供了非某单词的写法 (?!more)

location ~* ^/mag/[^/]+/(?!more)([^/]+)/ {
  rewrite ^/mag/[^/]+/(.*) /m/$1 permanent;
}


这个写法勉强可以应付了,后面的匹配单元虽说还不完美,但也能够对付我的所有需求内容了。
有需要的可以参考此写法。

引用

常用分组语法

捕获
(exp) 匹配exp,并捕获文本到自动命名的组里
(?exp) 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) 匹配exp,不捕获匹配的文本,也不给此分组分配组号

零宽断言
(?=exp) 匹配exp前面的位置
(?<=exp) 匹配exp后面的位置
(?!exp) 匹配后面跟的不是exp的位置
(?


参考资料:正则表达式
Tags:
Nginx的代理功能太完善了,我们看看proxy_redirect参数的作用。

案例说明:
要做一个html.aslibra.com的域名处理很多网站的html内容,当然是后端的服务器了,目录分析
html.zcom.com/img.aslibra.com/
html.zcom.com/css.aslibra.com/
访问的域名是该目录下的域名,那前端nginx的配置应该类似这样:

server {
  server_name img.aslibra.com;
  location / {
    rewrite ^(.*) /$http_host$1 break;
    proxy_set_header Host html.aslibra.com;
    proxy_pass http://cache-89;
  }
}


但这样访问目录时如果没有以“/”结尾,则服务器会返回301redirect:

[root@aslibra ~]# curl -I http://img.aslibra.com/www
HTTP/1.1 301 Moved Permanently
Server: nginx/0.7.59
Date: Tue, 21 Jul 2009 15:28:58 GMT
Connection: keep-alive
Location: http://html.aslibra.com/img.aslibra.com/www/


html.aslibra.com这个域名并非公布的域名,返回给客户端是会自然产生错误的
Nginx可以很好的处理这个问题:

server {
  server_name img.aslibra.com;
  location / {
    rewrite ^(.*) /$http_host$1 break;
    proxy_set_header Host html.aslibra.com;
    proxy_pass http://cache-89;
    proxy_redirect   http://html.aslibra.com/img.aslibra.com/    /;
  }
}


加一行proxy_redirect后,正常了:

[root@aslibra ~]# curl -I http://img.aslibra.com/www
HTTP/1.1 301 Moved Permanently
Server: nginx/0.7.59
Date: Tue, 21 Jul 2009 15:23:49 GMT
Content-Type: text/html
Location: http://img.aslibra.com/www/
Connection: keep-alive
Content-Length: 185
Expires: Tue, 21 Jul 2009 16:23:49 GMT
Cache-Control: max-age=3600


就这么样就ok啦~
不过貌似不支持变量出现在地址里,这个就郁闷了,必须指定相应域名。
对于多个域名匹配的server,redirect设置不能写作'/'了,否则会用第一个域名作为redirect域名
可以写几个匹配规则:

proxy_redirect   http://html.aslibra.com/img.aslibra.com/    http://img.aslibra.com/;
proxy_redirect   http://html.aslibra.com/css.aslibra.com/    http://css.aslibra.com/;


Tags: , ,
Nginx的代理功能很强大,主要体现在可以设置返给后端服务器的http头信息,这一点可以让我们方便的实现很多需求。

比如要做一个镜像,这个当然有可能是好事。
http://a.aslibra.com/s/main.jpg
我需要访问 http://b.aslibra.com/s/main.jpg 也是一样的内容呢?

server {
  server_name  b.aslibra.com;
  root    /Data/webapps/b.aslibra.com;
  error_page           404 = @fetch;
  location @fetch {
    internal;
    proxy_store             on;
    proxy_store_access      user:rw  group:rw  all:r;
    proxy_set_header Host a.aslibra.com;
    proxy_set_header referer http://a.aslibra.com/;
    proxy_pass   http://backend;
    root  /Data/webapps/b.aslibra.com;
  }
}


利用缓存功能就可以了,以上例子还加上了简单破解防盗链的方法,就是加上正确的referer的头信息就可以了
upstream自己可以设定,修改了host的信息,使得相当于本地访问backend使用了要做镜像的域名。

同理,要多个域名是一样的内容是,那可以多个域名使用同样的server设定,简单的指定host值即可,不列举了。
Tags: ,
升级一下Nginx,笔记一下:

wget http://sysoev.ru/nginx/nginx-0.7.59.tar.gz
tar xfz nginx-0.7.59.tar.gz
cd nginx-0.7.59
./configure  --prefix=/Data/apps/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module \
&& make && make install

#平滑升级可执行程序,使用新的 nginx 可执行程序替换旧的
kill -USR2 `cat /Data/apps/nginx/logs/nginx.pid`
#你可以让旧进程停止工作
kill -QUIT `cat /Data/apps/nginx/logs/nginx.pid.oldbin`
#如果不需要完全停止旧进程,还希望恢复的,你必须发送 WINCH 信号给旧的主进程,然后,它的工作进程就将开始从容关闭
kill -WINCH `cat /Data/apps/nginx/logs/nginx.pid.oldbin`


升级后的信息:

[root@localhost nginx]# curl -I http://localhost
HTTP/1.1 403 Forbidden
Server: nginx/0.7.59
Date: Wed, 10 Jun 2009 15:04:14 GMT
Content-Type: text/html
Content-Length: 169


参考资料:
Nginx中文文档 > 运行和控制 Nginx - 命令行参数和信号
Tags:
分页: 1/3 第一页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐