一次nginx 504 Gateway Time-out错误排查、解决记录

一次nginx 504 Gateway Time-out错误排查、解决记录

记一次莫名其妙的网站失去响应排查。之前网站一直是使用nginx做代理后端的apache运行php来提供服务。apache经常会不定期不定时间的出现不能服务失去响应,然后nginx出现"504 Gateway Time-out"查看错误日志也看不到任何东西,以为是apache的bug(其实不是,下面会说原因)。
Nginx中共享session会话配置方法例子

Nginx中共享session会话配置方法例子

Session一般都指时域。在计算机术语中,Session是指一个终端用户与交互系统进行通信的时间间隔,通常指从注册进入系统到注销退出系统之间所经过的时间以及如果需要的话,可能还有一定的操作空间。
为Nginx添加SPDY功能

为Nginx添加SPDY功能

本人帮协会搭的论坛,一直是使用ssl访问的,但是普通的https既慢又吃资源,而有个协议可以很方便的解决这个问题,那就是大Google发明的SPDY协议。所以,我也开始尝试着给自己的论坛加上SPDY协议,WEB服务器本人选择的是nginx,在过去,Nginx并没有内置SPDY协议,需要打开的话还要下载开发版然后手动编译,很不方便。喜闻乐见的是,最近Nginx发布了1.6稳定版,这个版本终于内置了SPDY的支持,也是我等广大建站人员的福音啊,我也就迫不及待的给论坛加上了SPDY协议支持了。 首先明确打开SPDY协议的前提,以下三个缺一不可:
Nginx实现静态资源的反向代理实例

Nginx实现静态资源的反向代理实例

github 中很多项目都有一个 readme 文件,很多人喜欢在文件中添加自己的创作或封面图片,比如 substack 为他的每个项目绘制了一个 logo。这些图片在 github 中能直接在页面中显示出来,不过 url 被替换成了 github 自己的。比如在 browserify 项目中,logo 的链接变成了 代码如下: https://camo.githubusercontent.com/e19e230a9371a44a2eeb484b83ff4fcf8c824cf7/687474703a2f2f737562737461636b2e6e65742f696d616765732f62726f777365726966795f6c6f676f2e706e67 而我们通过查看 raw 能发现原 url 是 代码如下: http://substack.net/images/browserify_logo.png 这样做的一个好处是防止因为在 https 网站中出现 http 链接,否则在客户端会得到一个风险警告。github 在细节上真是考虑的十分周到。 既然有需求,我们就来实现它。通常的做法是写一个应用去抓取远程的静态资源,然后反馈给前端,这就是一个简单地反向代理了。但是这样做比较繁琐,效率也未见得高,其实我们可以直接通过 nginx 来代理这些静态文件。 nginx 的 proxy_pass 支持填写任意地址,并且支持 dns 解析。所以我的思路是,将原 url 加密转成网站自身的 url。比如上面的 代码如下: http://substack.net/images/browserify_logo.png 可以加密成 代码如下: 764feebffb1d3f877e9e0d0fadcf29b85e8fe84ae4ce52f7dc4ca4b3e05bf1718177870a996fe5804a232fcae5b893ea (加密和序列化算法网上有很多,在此就不赘述了)
Nginx的伪静态配置中使用rewrite来实现自动补全的实例

Nginx的伪静态配置中使用rewrite来实现自动补全的实例

nginx+php 使用的时候经常需要伪静态,一般大家都手动设置。那有没有办法让 nginx 自动补全路径呢? 这两天折腾很久,才实现了这样一个功能: 请求 /a/b/c 若文件不存在,查找 /a/b/index.php,/c 作为 PATH_INFO; 若文件不存在,查找 /a/index.php,/b/c 作为 PATH_INFO; 若文件不存在,查找 /index.php,/a/b/c 作为 PATH_INFO; 若文件不存在,返回 404.
Nginx中的用户认证配置及阻止用户使用代理访问的方法

Nginx中的用户认证配置及阻止用户使用代理访问的方法

nginx用户认证配置( Basic HTTP authentication) ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容。web上的一些内容不想被其他人知道,但是又想让部分人看到。nginx的http auth模块以及Apache http auth都是很好的解决方案。 默认情况下nginx已经安装了ngx_http_auth_basic_module模块,如果不需要这个模块,可以加上 --without-http_auth_basic_module 。 nginx basic auth指令 语法:     auth_basic string | off; 默认值:     auth_basic off; 配置段:     http, server, location, limit_except 默认表示不开启认证,后面如果跟上字符,这些字符会在弹窗中显示。 语法:     auth_basic_user_file file; 默认值:     ― 配置段:     http, server, location, limit_except 用户密码文件,文件内容类似如下:
Linux下用Nginx作Perl程序服务器及其中Perl模块的配置

Linux下用Nginx作Perl程序服务器及其中Perl模块的配置

perl + fastcgi + nginx搭建nginx + fastcgi是php下最流行的一套环境了,那perl会不会也有fastcgi呢,当然有,今天来搭建下nginx下perl的fastcgi.性能方面也不亚于php,但是现在web程序php的流行程度perl无法比拟了,性能再好也枉然,但是部分小功能可以考虑使用perl的fastcgi来搞定.进入正题. 1. 准备软件环境:
关闭nginx空主机头 防止nginx空主机头及恶意域名指向

关闭nginx空主机头 防止nginx空主机头及恶意域名指向

nginx的默认配置中的虚拟主机允许用户通过IP访问,或者通过未设置的域名访问(比如有人恶意把他自己的域名指向了你的ip) 这是因为默认配置中的server区域里有这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机,接受所有指向过来的域名 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回500.
Nginx反向代理实现支持长连接详解

Nginx反向代理实现支持长连接详解

前言 Nginx upstream与后端的连接默认为短连接,通过HTTP/1.0向后端发起连接,并把请求的"Connection" header设为"close"。Nginx与前端的连接默认为长连接,一个用户跟Nginx建立连接之后,通过这个长连接发送多个请求。如果Nginx只是作为reverse proxy的话,可能一个用户连接就需要多个向后端的短连接。如果后端的服务器(源站或是缓存服务器)处理并发连接能力不强的话,就可能导致瓶颈的出现。
Nginx 配置过程的具体步骤

Nginx 配置过程的具体步骤

Nginx 配置过程一、下载 Nginx二、解压三、配置四、开启:五、关闭:如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
nginx+redis实现session共享

nginx+redis实现session共享

上一篇我们介绍了nginx实现的负载均衡和动静分离,我们在文章的末尾说到,负载均衡需要面临的一个问题是内存数据的同步。例如:我有A,B两台服务器做了负载均衡,当我在A服务器上执行了登录并且将登录数据存入session的时候,这些session数据只存在于A服务器上,而没有在B服务器上,假如在处理下一个请求的时候,我需要用到session的数据,而不巧的是,这个请求刚好被交由B服务器来处理,这时候就会出现B服务器拿不到session数据的情况,从而造成错误。