设为首页 收藏本站
查看: 1751|回复: 6

[经验分享] 关于一些nginx的高级扩展应用

[复制链接]

尚未签到

发表于 2013-4-1 09:13:42 | 显示全部楼层 |阅读模式

nginx.conf 配置解释

  • [Shell] 纯文本查看 复制代码
    详解user   www www; 
    定义 Nginx 运行的用户及组 
    worker_processes 8; #[ debug | info | notice | warn | error | crit ] 
    error_log /data1/logs/nginx_error.log crit; pid 
    /usr/local/webserver/nginx/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. 
    worker_rlimit_nofile 65535; 
    一个 nginx 进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit 
    -n) nginx 进程数相除,与但是 nginx 分配请求并不是那么均匀,所以最好与 ulimit -n的值保持一致。 
    # use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 
    events use epoll; 参考事件模型 
    worker_connections 65535; 每个进程最大连接数(最大连接=连接数 x 进程数) #设定 http 服务器 
    http include 
    mime.types; 文件扩展名与文件类型映射表 
    default_type application/octet-stream; #默认文件类型 
    #charset gb2312; 默认编码 
    server_names_hash_bucket_size 128; #服务器名字的 hash 表大小 
    client_header_buffer_size 32k; 上传文件大小限制 
    large_client_header_buffers 4 32k; 设定请求缓 
    client_max_body_size 8m; 设定请求缓 
    sendfile on; #开启高效文件传输模式 
    tcp_nopush 
    on; 防止网络阻塞 
    tcp_nodelay on; 防止网络阻塞 
    keepalive_timeout 60; 超时时间 
    #FastCGI 是为了改善网站的性能--减少资源占用,提高访问速度.有关 fastCGI 的 
    详细资料请参阅:[url]http://www.fastcgi.com[/url] 
    fastcgi_connect_timeout 300; 
    fastcgi_send_timeout 300; 
    fastcgi_read_timeout 300; 
    fastcgi_buffer_size 64k; 
    fastcgi_buffers 4 64k; 
    fastcgi_busy_buffers_size 128k; 
    fastcgi_temp_file_write_size 128k; 
    gzip on; 
    gzip_min_length 1k; #最小压缩文件大小 
    gzip_buffers 
    4 16k; #压缩缓冲区 
    gzip_http_version 1.0; 
    #压缩版本(默认 1.1,前端为 squid2.5 使用 1.0 
    gzip_comp_level 2; 压缩等级 
    gzip_types 
    text/plain application/x-javascript text/css application/xml; 
    压缩类型,默认就已经包含 text/html 所以下面就不用再写了,当然写上去的话,也 
    不会有问题,但是会有一个 warn 
    gzip_vary on; 
    #limit_zone crawler $binary_remote_addr 10m; server listen   80; 
    server_name [url]www.opendoc.com.cn[/url] 
    index index.html index.htm index.php; 
    root /data0/htdocs/opendoc; 
    location ~ .*\.(php|php5)?$ #fastcgi_pass unix:/tmp/php-cgi.sock; 
    fastcgi_pass 127.0.0.1:9000; 
    fastcgi_index index.php; 
    include fcgi.conf; #对图片缓存 
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ expires 30d; #对 JS CSS 缓存 
    location ~ .*\.(js|css)?$ expires  1h; #日志设定 
    log_format access '$remote_addr - $remote_user [$time_local] "$request" ' 
    '$status $body_bytes_sent "$http_referer" '  '"$http_user_agent" $http_x_forwarded_for'; 
    #日志的格式
    access_log /data1/logs/access.log access; 
    } 

nginx判断手机移动设备用户的方法

有两种方法

一种是用语言进行判断,比如用php的 $_SERVER['User-Agent']  

  • [Shell] 纯文本查看 复制代码
    <?php  
      
    function is_mobile(){  
      
        // returns true if one of the specified mobile browsers is detected  
      
        $regex_match="/(nokia|iphone|android|motorola|^mot\-|softbank|foma|docomo|kddi|up\.browser|up\.link|";  
        $regex_match.="htc|dopod|blazer|netfront|helio|hosin|huawei|novarra|CoolPad|webos|techfaith|palmsource|";  
        $regex_match.="blackberry|alcatel|amoi|ktouch|nexian|samsung|^sam\-|s[cg]h|^lge|ericsson|philips|sagem|wellcom|bunjalloo|maui|";      
        $regex_match.="symbian|smartphone|midp|wap|phone|windows ce|iemobile|^spice|^bird|^zte\-|longcos|pantech|gionee|^sie\-|portalmmm|";  
        $regex_match.="jig\s browser|hiptop|^ucweb|^benq|haier|^lct|opera\s*mobi|opera\*mini|320x320|240x320|176x220";  
        $regex_match.=")/i";          
        return isset($_SERVER['HTTP_X_WAP_PROFILE']) or isset($_SERVER['HTTP_PROFILE']) or preg_match($regex_match, strtolower($_SERVER['HTTP_USER_AGENT']));  
    }  
      
    /*  
    allow the user a way to force either the full or mobile versions of the site - use a GET parameter on requests:  
      
    include likes to both versions of the site w/ the special force mode parameters, 'mobile' and 'full':  
      
    <a href="View'>[url]http://www.php100.com/?mobile[/url]">View Mobile Site</a>  
    <a href="View'>[url]http://www.php100.com/?full[/url]">View Full Site</a>  
      
    Always check for 'mobile' or 'full' parameters before accounting for any User-Agent conditions:  
    */  
      
    if ($_GET['mobile']) {  
     $is_mobile = true;  
    }  
       
    if ($_GET['full']) {  
     $is_mobile = false;  
    }  
    if($is_mobile) {  
        //it's a mobile browser, do something  
        header("Location: [url]http://wap.baidu.com[/url]");  
    } else {  
        //it's not a mobile browser, do something else  
        header("Location: [url]http://www.baidu.com[/url]");  
        // or instead of a redirect, simply build html below  
    }  
      
    ?>  

还有一种是用nginx的来判断

  • if ($http_user_agent ~* (mobile|nokia|iphone|ipad|android|samsung|htc|blackberry)) {
  • // 添加你需要处理的语句,比如rewrite等
  • }

可能一些设备可能没有识别的,大家可以看分析日志,然后把 User-Agent的关键字写到if里面~


nginx的配置文件if语句是不支持“并且”和“或者”这样的多重条件判断的。在一些情况下,我们又需要if语句进行多个条件的判断,那么如何来实现呢?我们可以利用nginx的set语句设置变量的方法来解决。

假设我们需要对 /123/ 路径进行rewrite,但同时要排除 /123/images/ 路径不对该路径进行rewrite,可以采用下面的解决办法:

  • [Shell] 纯文本查看 复制代码
    set $doRewrite "0"; 
     
    if ($request_uri ~ ^/123/) { 
    set $doRewrite "1"; 
    } 
     
    if ($request_uri ~ ^/123/images/) { 
    set $doRewrite "0"; 
    } 
     
    if ($doRewrite = "1") { 
    // do rewrite 
    } 
    

还有一个实例

这个意思是   判断真是的ip,然后根据ip做一些操作~  这里用的map映射

  • [Shell] 纯文本查看 复制代码
    map $http_x_forwarded_for $deny_access { 
        default     0; 
        1.2.3.4     1; 
        1.2.3.5     1; 
        1.2.3.6     1; 
    } 
     
    if ($deny_access = 1) { 
        return 403; 
    } 
     

防盗链的一些个配置

  • [Shell] 纯文本查看 复制代码
    location ~* \.(gif|png|jpg|bmp|swf|flv)$ { 
        valid_referers none blocked [url]www.ruifengyun.com[/url] ruifengyun.com; 
     
        if ($invalid_referer) { 
                return 403; 
        } 
    } 

以上的例子可以实现扩展名为 gif,png,jpg,bmp,swf,flv的url防止被盗链。如果你需要其它的url防止被盗链,添加相应的后缀即可。

也可以 把return 403 替换成 #rewrite ^/ http://ruifnegyun.com/404.jpg;     这样可以用另一种方法推广自己的网站

nginx的限速的规则


配置简单,只需3行

  • [Shell] 纯文本查看 复制代码
    http{ 
     
        …… 
     
        limit_zone one $binary_remote_addr 10m; 
     
        …… 
     
        server { 
     
            location / { 
     
                …… 
     
                limit_conn one 2; 
     
                limit_rate 40k; 
     
            } 
     
        } 
     
    } 

意思是:limit_zone针对每个IP定义一个存储session状态的容器。这个示例中定义了一个名叫one的10m大小的容器,这个名字会在后面的limit_conn中使用。limit_conn指定每个访客只能建立两条链接,limit_rate限制每条链接的速度不超过40K。所以,以上配置限制用户访问此站点总速度上限为80K。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-4625-1-1.html 上篇帖子: Nginx的NginxStatus状态说明 下篇帖子: 安装memcached+nginx+php+memadmin笔记

尚未签到

发表于 2013-4-1 09:16:10 | 显示全部楼层
精典之极就是精斑!!!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-17 16:06:52 | 显示全部楼层
所有的男人生来平等,结婚的除外。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

累计签到:1 天
连续签到:1 天
发表于 2013-5-20 04:15:17 | 显示全部楼层
相当不错,感谢无私分享精神!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-22 13:51:26 | 显示全部楼层
如果恐龙是人,那人是什么?

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-27 07:18:40 | 显示全部楼层
找不到恐龙,就用蜥蜴顶

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

尚未签到

发表于 2013-5-31 10:21:04 | 显示全部楼层
我抢、我抢、我抢沙发~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表