2010年2月

Nginx配置proxy_pass的/路径问题

在nginx中配置proxy_pass时,如果是按照^~匹配路径时


要注意proxy_pass后的url最后的/


当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走


如果没有/,则会把匹配的路径部分也给代理走



折叠复制代码




  1. location ^~ /static_js/

  2. {

  3. proxy_cache js_cache;

  4. proxy_set_header Host js.test.com;

  5. proxy_pass http://js.test.com/;

  6. }




如上面的配置,如果请求的url是http://servername/static_js/test.html


会被代理成http://js.test.com/test.html


而如果这么配置



折叠复制代码




  1. location ^~ /static_js/

  2. {

  3. proxy_cache js_cache;

  4. proxy_set_header Host js.test.com;

  5. proxy_pass http://js.test.com;

  6. }




则会被代理到http://js.test.com/static_js/test.htm


当然,我们可以用如下的rewrite来实现/的功能



折叠复制代码




  1. location ^~ /static_js/

  2. {

  3. proxy_cache js_cache;

  4. proxy_set_header Host js.test.com;

  5. rewrite /static_js/(.+)$ /$1 break;

  6. proxy_pass http://js.test.com;

  7. }



web页面中自动切换http/https

当我们的某个应用支持https后


就会有这样的需求:当用户使用https访问某个页面时,那么页面里多的所有元素也都应该是https的请求,反之亦然


通常会有以下2种办法:



  1. 在js中通过location.protocol来获取当前页面的Scheme,然后来生成对应的url

  2. 使用相对路径来实现:


  3. 折叠复制代码




    1. /js/pv_v204.js  

    2. ../images/pic.gif  

    3. css/style.css  

    4. //vip.sohu.com/pay/pay_auth.jsp  







             这几种相对路径都是合法的


             注意最后一种用法,对于需要的资源不在同一个域下时非常有用


             它省略了url中的Scheme部分,这样它就会根据当页面的Scheme来自动切换了

Nginx负载均衡中的fail_timeout

今天,一个服务器的端口8082死掉了,该端口位于nginx的负载均衡后面


查看nginx的error.log中,能看到很多connect() failed的错误


一开始,还以为是nginx的负载均衡机制没有做任何的处理,仍然把请求最终给分发到了死掉的8082端口上


后来,经过测试发现,nginx对于某些请求,还是会先request死掉的8082端口


当它发现timeout或refused后,会把改请求会分发到upstream的其它端口上


这样,对最终用户来说,是不受任何影响的,可能会感觉到稍慢一些而已


 


同时,还发现了负载均衡配置时的2个参数:fail_timeoutmax_fails


这2个参数一起配合,来控制nginx怎样认为upstream中的某个server是失效的


当在fail_timeout的时间内,某个server连接失败了max_fails次,则nginx会认为该server不工作了


同时,在接下来的 fail_timeout时间内,nginx不再将请求分发给失效的server


个人认为,nginx不应该把这2个时间用同一个参数fail_timeout来控制


要是能再增加一个fail_time,来控制接下来的多长时间内,不再使用down掉的server就更好了~


如果不设置这2个参数,fail_timeout默认为10s,max_fails默认为1


就是说,只要某个server失效一次,则在接下来的10s内,就不会分发请求到该server上

妈妈不能吃东西了

吃过饭后,我洗了几个草莓大家吃


草莓有些酸,还放了2天,不太新鲜了


昕昕吃了一个后,又想拿最后的一个吃


我就和他说:你别吃了,拿去给妈妈吃吧


然后,他一个手拿起那个草莓放到身后


一个手端着个空碗,递给妈妈


宝宝妈妈当时正在看书,就没注意到碗里是空的


伸手去摸草莓,结果摸了个空......


过会了,我又给欣欣说:你把草莓给妈妈吃一口呗


于是,他就走了过去,掰开妈妈的嘴,用手指着牙


说:妈妈的牙都不好了,,不能吃东西了(以前,


宝宝妈妈给昕昕讲为什么要刷牙时,曾说过自己的牙因为没有以前好好刷,现在都不好了)


然后,又把妈妈的嘴给合上,径自走了.....

Nginx中Mail SSL的配置

 Nginx的mail ssl模块提供了Mail Proxy的SSL/TLS支持


需要在编译的时候,加上--with-mail_ssl_module参数


它有2个主要的指令:ssl和starttls


ssl是配置pop3s和smtps,imaps时用的


starttls是在普通的pop3,smtp,imap协议时用的


当启用了starttls指令后,就可以在pop3中发送stls指令,在smtp和imap中发送starttls指令来完成传输过程的加密了


以下是配置的样例:



折叠复制代码




  1. server {  

  2.     listen 110;  

  3.     protocol pop3;  

  4.     proxy on;   

  5.     starttls on;   

  6.     ssl_certificate      mail_test.crt;  

  7.     ssl_certificate_key  mail_test.key;  

  8.     auth_http_header Auth-Domain "test.com";   

  9. }  

  10.   

  11. server {  

  12.     listen 995;  

  13.     protocol pop3;  

  14.     proxy on;   

  15.     ssl on;   

  16.     ssl_certificate      mail_test.crt;  

  17.     ssl_certificate_key  mail_test.key;  

  18.     auth_http_header Auth-Domain "test.com";   

  19. }  






 

最新文章

最近回复

  • feifei435:这两个URI实际是不一样的
  • zsy: git push origin 分支 -f 给力!
  • 冼敏兵:简单易懂,good fit
  • Jack:无需改配置文件,看着累! # gluster volume se...
  • Mr.j:按照你的方法凑效了,折腾死了。。。。
  • zheyemaster:补充一句:我的网站路径:D:\wamp\www ~~菜鸟站长, ...
  • zheyemaster:wamp2.5(apache2.4.9)下局域网访问403错误的...
  • Git中pull对比fetch和merge | 炼似春秋:[…] 首先,我搜索了git pull和git fe...
  • higkoo:总结一下吧, 性能调优示例: gluster volume s...
  • knowaeap:请问一下博主,你维护的openyoudao支持opensuse吗

分类

归档

其它