简单配置服务端代理Tengine

刚刚说完Apache,接下来写一下tengine(nginx)。tengine是建立在nginx上的开源软件,添加了一大堆feature,并且你可以使用自定义的内存管理,不管是作为前端代理,还是前端缓存,效果都是萌萌哒的。

nginx和tengine略有差异,请查看官方WikiTengine

## 根据自己情况选择用户
user  nobody;
## 建议设置机器CPU核心数目
worker_processes  1;
## 之前配置机器的时候设置过的打开数目
worker_rlimit_nofile51200;

## 记录错误日志
error_log  logs/error.log;
## pid文件
pid        logs/nginx.pid;

## 设置最大连接数和使用epoll提高效率
events{
    worker_connections  1024;
    useepoll;
}

http{
    include       mime.types;
    default_type  application/octet-stream;
    ## 打底配置日志
    access_log  logs/access.log;
    ## 基础限流
    limit_req_zone$binary_remote_addr zone=one:10mrate=1r/s;
    limit_req_log_level error;
    ## 允许使用sendfile
    sendfile        on;
    ## 配合sendfile
    tcp_nopush     on;
    ## 关闭基础信息
    server_info off;
    ## 根据自己的站点设置
    keepalive_timeout  50;
    ## 开启gzip,这里如果不考虑IE6也没关系的话,不需要根据UA关闭GZIP
    gzip  on;
    gzip_proxied any;
    gzip_clear_etag on;
    gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript;
    ## 加载站点配置
    include vhosts/*;
}

和apache一样,简单阻止一些访问,根据自己的情况添加和修改。

# robots.txt 不进行记录
location=/robots.txt{access_log off;log_not_found off;}
# favicon.ico 不进行记录
location=/favicon.ico{access_log off;log_not_found off;}
# 隐藏文件 不进行记录且禁止访问
location~/\.{access_log off;log_not_found off;deny all;}
# 不存在的备份文件 不进行记录且禁止访问
location~*"bbs\.zip"{access_log off;log_not_found off;deny all;}
location~*"wwwroot\.zip"{access_log off;log_not_found off;deny all;}
location~*".*\.asp$|.*\.aspx$|.*\.jsp$|.*\.mdb|.*\.log"{access_log off;log_not_found off;deny all;}
location~*"fckeditor|ckfinder|~root"{access_log off;log_not_found off;deny all;}

# ~结尾文件不进行记录且禁止访问
location~~${access_log off;log_not_found off;deny all;}
# 设置常用文件缓存为30天
location~.*\.(gif|jpg|jpeg|png|bmp|swf|js|css)${expires30d;}

##
# 阻止注入的一些设置
##
location~*"union.*select.*\(|union.*all.*select.*|concat.*\(" { deny  all; }

##
# 阻止常规利用的一些设置
##
location ~* "proc/self/environ" { deny  all; }

##
# 阻止垃圾评论的一些设置
##
if ($http_user_agent ~ "\b(ultram|unicauca|valium|v\iagra|vicodin|xanax|ypxaieo|erections|hoodia|huronriveracres|impotence|levitra|libido|ambien|blue\spill|cialis|cocaine|ejaculation|erectile|lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b"){return404;}

##
# 阻止UA的一些设置
##
set$block_user_agents0;
# 拒绝无UA访问
if($http_user_agent~"^$"){set$block_user_agents1;}
# 根据自己情况拒绝wget以及curl
if($http_user_agent~"Wget|wget|curl|libwww-perl|httplib|WordPress|wordpress|PycURL|POE::Component::Client|InetURL|Microsoft URL Control"){set$block_user_agents1;}
if($http_user_agent~"WebCopier|Offline Explorer|Sphider|mail"){set$block_user_agents1;}
if($http_user_agent~"Opera/9\.0 \(Windows NT5\.1;U;en\)|Opera/6\.01 \(Windows ME;U\) \[en\]"){set$block_user_agents1;}
if($http_user_agent~"Mozilla/3\.0"){set$block_user_agents1;}
if($http_user_agent~"DotBot|YandexBot|Superfeedr"){set$block_user_agents1;}
if($block_user_agents=1){return404;}

对于默认IP的访问的处理

##
# 默认IP地址
##
server{
    listen       80default;
    server_name  _;

    location/{
        # 允许哪些
        if(自己的条件){
            return200;
        }
        # 禁止直接访问IP地址
        return444;
    }
}

简单配置访问规则,配合hhvm之类的fast-cgi的程序使用,省略配置目录反代等。
这里apache和nginx有个细节差异,apache rewrite -L是强制转向,nginx如果要实现隐性301必须使用代理模式。

## soulteary.com www.soulteary.com
server{
    listen80;
    server_name soulteary.com www.soulteary.com;
    ## 如果做了数据分离,可以去掉。
    ## client_max_body_size 10m;

    access_log/yourpath/www.soulteary.com/logs/access.log;
    error_log/yourpath/www.soulteary.com/logs/error.log;

    server_name_in_redirect off;
    include nginx-security.conf;

    root/yourpath/www.soulteary.com/public;
    index index.php index.html index.htm;

    location~/\.(gif|jpg|png|css|js|ico|swf|svg)${
        expires max;
    }

    location/{
        try_files$uri$uri//index.php?q=$uri&$args;
    }

    location~\.(hh|php)${
        fastcgi_keep_conn on;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME$document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

使用nginx作为node前端转发时的设定。

当然,如果你的node直接跑在最前端,那么请适当修改,对于IP地址直接取remoteAddress,不要相信转发。

upstreamghost_soulteary_upstream{
        server127.0.0.1:2378;
        keepalive64;
}

server{
    listen80;
    server_name www.soulteary.im soulteary.im;
    if_modified_since before;

    server_name_in_redirect off;
    include nginx-node-security.conf;

    location/{
        proxy_cache_valid20030m;
        proxy_cache_valid4041m;
        proxy_pass http://ghost_soulteary_upstream;
        proxy_ignore_headersX-Accel-Expires Expires Cache-Control;
        proxy_ignore_headers Set-Cookie;
        proxy_hide_header Set-Cookie;
        proxy_hide_headerX-powered-by;
        proxy_set_headerX-Real-IP$remote_addr;
        proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for;
        proxy_set_header Host$http_host;
        expires10m;
    }
}

如果你只是需要一个简单的静态站点的话,可以使用如下配置:

## www.soulteary.com
server{
    listen80;
    server_name www.soulteary.com;

    access_log/yourpath/www.soulteary.com/logs/access.log;
    error_log/yourpath/www.soulteary.com/logs/error.log;

    server_name_in_redirect off;
    include nginx-security.conf;

    valid_referers none blocked server_names *.soulteary.com soulteary.com;
    if($invalid_referer){
        rewrite^/"http://www.baidu.com/s?wd=妈妈说不要盗链"last;
        return404;
    }

    root/yourpath/www.soulteary.com/public;
    index index.html;
}

接下来写写network/redis/hhvm/ghost的设置吧。

时间: 2024-11-12 07:12:14

简单配置服务端代理Tengine的相关文章

socket编程,简单多线程服务端测试程序

socket编程,简单多线程服务端测试程序 前些天重温了MSDN关于socket编程的WSAStartup.WSACleanup.socket.closesocket.bind.listen.accept.recv.send等函数的介绍,今天写了一个CUI界面的测试程序(依赖MFC)作为补充.程序功能简介如下: 1:一个线程做监听用. 2:监听线程收到客户端连接后,创建新线程接收客户端数据.所有对客户端线程将加入容器,以便管理. 3:服务端打印所有客户端发来的信息. 4:服务端CUI界面输入数字

GCDAynscSocket简单使用-服务端

距离上次写<GCDAynscSocket简单使用-服务端>差不多一个月了,现在把服务端的介绍给补上. 服务端的介绍比较简单,因为服务端和客户端的接收和发送数据的方法是一样的,不同的地方在于服务端是开启一个服务被动的等待客户端的接入.所以只介绍一下如何开启和关闭服务. 1.开启服务 GCDAynscSocket封装的非常好了,大部分情况下我们只要调用它的接口就可以了. 开启服务可调用的方法: /** * Tells the socket to begin listening and accept

oracle 配置服务端

oracle 配置服务端,类似我们配置java环境一样 防止乱码的配置: 变量名:NLS_LANG 变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK 选择数据库的配置(重要): 变量值:TNS_ADMIN 变量名:D:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN(就是你的oracle安装的目录) 这是我的path配置: D:\app\Administrator\product\11.2.0\dbhome

转:实现一个简单的服务端推送方案

原文来自于:http://blog.csdn.net/jiao_fuyou/article/details/17090355 客户端和服务端的交互有推和拉两种方式:如果是客户端拉的话,通常就是Polling:如果是服务端推的话,一般就是Comet,目前比较流行的Comet实现方式是Long Polling. 注:如果不清楚相关名词含义,可以参考:Browser 與 Server 持續同步的作法介紹. 先来看看Polling,它其实就是我们平常所说的轮询,大致如下所示: Polling 因为服务端

Netty实例-简单的服务端-客户端实现,注释详细

       书籍推荐:                                       实例代码 :http://download.csdn.net/detail/jiangtao_st/7677503 Netty Server端实现 /** * * <p> * Netty Server Simple * </p> * * @author 卓轩 * @创建时间:2014年7月7日 * @version: V1.0 */ public class NettyServer

Charles学习(四)之使用Map local代理本地静态资源以及配置移动端代理在真机上调试iOS和Android客户端

前言 问题一:我们在App内嵌H5开发的过程中,肯定会遇到一个问题就是我不想在chrome的控制台中调试也不想在模拟器中调试,我想要在真机上调试,那么如何解决这个问题呢? 问题二:我们期待调试时达到的效果就是和Charles学习(二)之使用Map local代理本地静态资源在Mac上调试移动端中实现的效果相同,也就是说代码更改手机端页面实时更新,这个问题如何解决? 方案 问题一解决方案:使用真机,需要一台iPhone和一台Android,在真机上安装测试包 问题二解决方案: 配置移动端代理 | 

C# 编写WCF简单的服务端与客户端

http://www.wxzzz.com/1860.html Windows Communication Foundation(WCF)是由微软开发的一系列支持数据通信的应用程序框架,可以翻译为Windows 通讯开发平台.整合了原有的windows通讯的 .net Remoting,WebService,Socket的机制,并融合有HTTP和FTP的相关技术.是Windows平台上开发分布式应用最佳的实践方式. 今天带如何一步一步实现WCF服务端与客户端的开发及基础讲解. 一.在Visual

一个PHP写的简单webservice服务端+客户端

首先是服务端,服务端有一个主要的class组成:apiServer.php <?php /** * apiServer.php * * webservice主类 * * @filename apiServer.php * @version v1.0 * @update 2011-12-22 * @author homingway * @contact [email protected] * @package webservice */ define('API_AUTH_KEY', 'i8XsJb

JPush简单Java服务端案例实现

一.激光推送准备工作 1.注册极光推送开发者账号,创建应用: 2.完成推送设置,填写应用名提交生成安装包: 3.扫码安装简单的测试apk,查看应用信息会有AppKey和Master Secret用于推送. 二.java服务端 所需jar包和详细具体集成可以查看官方文档,这里只是实现了一个简单的通知或推送消息. import org.slf4j.Logger; import org.slf4j.LoggerFactory; import cn.jiguang.common.resp.APIConn