• 2016-04-04

    Nginx配置$request_uri与$uri变量的区别

    Views: 17851 | No Comments

    $request_uri

    这个变量就是HTTP头部的 path + query_string, 例如 /my/act?a=1.

    $uri

    这个变量对应到服务器上的一个文件(资源), 所以, 可能不等于 $uri, 因为可能被 rewrite 过. 例如浏览器请求 /my/act?a=1, 对应的资源(URI, $uri) 是 /dir/file.php, 当然, query_string 不属于 uri 的一部分.

    由此可见, $request_uri 这个变量的名字是有歧义的, URI 并不包含 query_string, 但这个变量却包含.

    Posted by ideawu at 2016-04-04 15:07:39 Tags:
  • 2015-02-28

    Nginx 限速模块简单配置

    Views: 18643 | No Comments

    Nginx 的限速模块, 也即 ngx_http_limit_req_module.

    http {
        limit_req_zone $binary_remote_addr zone=zone_1rps:10m rate=1r/s;
        limit_req_zone $binary_remote_addr zone=zone_3rps:10m rate=3r/s;
        limit_req_zone $binary_remote_addr zone=zone_5rps:10m rate=5r/s;
    
        server {
            location ~ ^/index.php$ {
                limit_req_status 403;
                limit_req zone=zone_1rps burst=5;
            }
        }
    }
    
    Posted by ideawu at 2015-02-28 15:52:28 Tags:
  • 2014-08-12

    Nginx 安装 HTTPS SSL 证书

    Views: 22849 | No Comments

    基本步骤可以参考这篇文章, 但这篇文章有一个致命错误, 就是没有安装 INTERMEDIATE CA, 照样会被浏览器显示证书不可信.

    1. 生成 server.key.orig

    openssl genrsa -des3 -out server.key.orig 2048
    

    2. 生成 server.csr 和 server.key

    openssl req -new -key server.key.orig -out server.csr
    openssl rsa -in server.key.orig -out server.key
    

    中间, Common Name 就是域名, 如果你想同时保护 www.you.com 和主域 you.com, 则输入 www.you.com, 如果你输入的是 you.com 的话, 将无法保护 www.

    注: server.key.orig 带有密码, 需要生成无密码的 server.key.

    3. 拿着 server.csr 去证书厂商买证书

    4. 买完后, 厂商会给你发两个证书 server.crt 和 server.intermediate.crt

    5. 生成最终的 server.chained.crt

    cat server.crt server.intermediate.crt > server.chained.crt
    

    6. 配置 nginx

    ssl_certificate     server.chained.crt;
    ssl_certificate_key server.key;
    
    Posted by ideawu at 2014-08-12 12:21:50 Tags: , ,
  • 2013-11-11

    初学者的 Linux 安装 Nginx PHP fpm 配置教程

    Views: 50615 | No Comments

    网上的很多 Linux 操作系统下安装 Nginx + PHP 的教程都很老, 而且各种依赖, 对于初学者来说比较容易混淆, 所以, 我重新写了此篇博客, 用于介绍最简单的 Linux 下安装 Nginx + PHP 的方法.

    此文会经常更新, 保持与时俱进. 如果你不是在 ideawu.net 网站看到本文, 请访问 ideawu.net, 阅读最新的版本.

    -------------------2016-12-22 更新----------------------
    现在, 我建议你使用 CentOS 6.x, 然后用 yum 来安装各个软件.
    --------------------------------------------------------
    

    Continue reading »

    Posted by ideawu at 2013-11-11 23:25:46 Tags: ,
  • 2013-06-28

    nginx-push-stream-module 笔记

    Views: 33694 | No Comments

    nginx-push-stream-module 模块可用于 comet, 服务器向浏览器实时推送消息. 这个模块功能和稳定性还不错, 只是没考虑和外部系统的接口, 所以扩展性比较差. 例如权限验证, 连接的建立和断开等基础信息和外部共享等, 都缺失.

    这里记录几个关键函数, 打算利用 syslog 和外部系统进行信息共享.

    连接建立事件

    ngx_http_push_stream_subscriber_handler();
    

    连接断开事件

    ngx_http_push_stream_cleanup_request_context();
    ngx_http_push_stream_worker_subscriber_cleanup_locked();
    
    Posted by ideawu at 2013-06-28 11:09:46 Tags: ,
  • 2013-05-30

    Nginx 499 错误码以及 AJAX 调用失败

    Views: 35294 | No Comments

    Nginx 的 499 响应错误码是 Nginx 自定义的, 并不是 HTTP 标准所定义, 499 对于 Nginx, 表示服务器还没有把所有数据发送给客户端(浏览器), 浏览器就主动中断了连接.

    最近, 在一个项目中遇到这个问题. 这是一个 AJAX 功能, 网页在点击 a 标签后, 向服务器发起了一个 AJAX 请求. 这个功能在 Firefox, Chrome 等浏览器中都正常, 在 IE8 下也正常, 但是, 当网页被嵌入到一个软件的浏览器控件里时, 就失败了. 浏览器总是返回 499. 网页代码如下:

    <a class="mybutton">Click Me</a>
    
    $('a.mybutton').click(function(){
        // ajax
    });
    

    后来, 才发现这是低版本 IE 的一个 bug, IE 中断了事件响应函数里的异步请求. 要解决, 必须在事件处理函数里返回 false. 将上面的代码改成如下就正常了:

    <a class="mybutton">Click Me</a>
    
    $('a.mybutton').click(function(){
        // ajax
        return false;
    });
    
    Posted by ideawu at 2013-05-30 11:02:20 Tags: , ,
|<<<1>>>| 1/1 Pages, 6 Results.