使用php写后端程序的例子很多,用c/c++的比较少。
本文采用nginx,spawn,fastcgi++来构建一个基于cgi的web程序。
由于fastcgi++依赖于boost库,我们先来装boost库
Linux下编译boost
1.编译前的准备工作
sudo yum install bzip2 bzip2-devel bzip2-libs python-devel -y
1
sudo yum install bzip2 bzip2-devel bzip2-libs python-devel -y
2.下载安装包并解压
#wget http://netcologn...
AJAX从一个域请求另一个域会有跨域的问题。那么如何在nginx上实现ajax跨域请求呢?要在nginx上启用跨域请求,需要添加add_header Access-Control*指令。如下所示:
location /{
add_header 'Access-Control-Allow-Origin' 'http://other.subdomain.com';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET';
...
...
the rest of your configuration here
...
...
}
1234567891011
...
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.
虽然这种损耗性能的行为不适合部署,但在本机调试的时候还是能够带来方便的 🙂
server 端应有如下代码,其他部分使用自己的配置:
index index.php index.html index.htm;
...
Owen Garrett是Nginx公司的产品总监,他在Nginx的官方博客上发表了一篇博文,说明了是哪些设计决策使得NGINX产品具备一流的性能和扩展能力。
NGINX的整体架构的特点是由一组进程协同工作:
主进程:负责执行特权操作,如阅读配置文件、绑定套接字、创建/通知协调(Signalling)子进程。
工作进程:负责接收和处理连接请求,读取和写入磁盘,并与上游服务器通信。当NGINX处于活跃状态时,只有工作进程是忙碌的。
缓存加载器进程:负责将磁盘高速缓存加载到内存中。这个进程在启动时运行后随即退出。
缓存管理器进程:负责整理磁盘缓存的...
众所周知nginx使用异步,事件驱动方法处理连接。这意味着nginx使用一个worker进程处理多个连接和请求,而不是每一个请求有一个专门的进程或着线程处理(像传统架构的服务器那样,例如apache)。为了实现这个目的,nginx使用非阻塞模式的socket和高效的方法epoll和kqueue。
因为高负荷进程的数量少且相对不变(通常1个cpu核心配1个进程),它内存消耗少,cpu时间没有浪费在任务切换上。这种处理请求的方式的优势也因为nginx而被大家所熟知。nginx能够成功处理数百万并发请求同时扩展性非常好。
不过异步,事件驱动方法还是有一个问题...
nginx和tomcat结合也是一个常用的组合,看到一个好的文章,介绍nginx做为方向代理,后端多个tomcat。
实现:一个nginx实例和多个tomcat实例,每个tomcat实例承载唯一的项目,tomcat实例在项目启动时自动启动
Nginx的安装配置
在/usr/local/目录下分别安装nginx和tomcat
为nginx添加conf.d目录,用于各项目的配置,比如新建renhetoutiao.conf文件
server {
listen 80;
server_name devtoutiao.renhe.cn;
root /home/renhetoutiao/renhetoutiao/htdocs;
access_log /home/...
nginx是一个方向代理服务器,它负责把http请求转发给另一个服务进程处理(例如php-fpm).
nginx的111错误表示nginx收到了一个请求,但是不能转发给配置文件中配置的的要给转发的进程。
一般发生这种情况都是nginx启动了,但是没有启动服务进程php-fpm,这时候启动或者重启服务进程就可以了。
uWSGI is a fast (pure C), self-healing, developer/sysadmin-friendly application container server.”, it utilizes the uwsgi protocol (notice the all-lowercase spelling), and supports WSGI applications served from it.
上面这段文字是uWSGI的官方定义。
uWSGI是一个快速(纯C的)、自维护、对开发管理人员友好的应用容器。它使用uwsgi协议(小写定义),支持WSGI应用运行在它上面。
uwsgi安装
yum install python python-devel libxml2 libxml2-devel python-setuptools zlib-devel wget openss...
问题描述
我们的业务系统比较复杂,但最终提供给用户的访问接口比较单一,都是使用 Nginx 来做一个代理转发,而这个代理转发,往往需要匹配很多种不同类型的 URL 转给不同的服务。这就使得我们的 Nginx 配置文件变得很复杂,粗略估计了下,我们有近20个 upstream,有近60个 location 匹配。这些配置按照模块分布在不同的文件中,虽然复杂,但是仍然在我们的努力下运行的良好。直到有一天,有位同事给我反映说偶尔有些 URL 会出现 404 的问题。一开始没太在意,因为他也说不准是哪一种 URL 才遇到这个问题。
问题查找
后来,慢慢的查找...
采集和防止采集是一个经久不息的话题,一方面都想搞别人的东西,另一方面不想自己的东西被别人搞走。
本文介绍如何利用nginx屏蔽ip来实现防止采集,当然也可以通过iptable来实现。
1.查找要屏蔽的ip
awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n
1
awk '{print $1}' nginx.access.log |sort |uniq -c|sort -n
nginx.access.log 为日志文件,
会到如下结果,前面是ip的访问次数,后面是ip,很明显我们需要把访问次数...