nginx不支持apk ipa文件下载的设置方法

nginx不支持apk ipa文件下载的设置方法

.apk 和 .ipa分别是android应用和ios应用的扩展名。 如果在浏览器下载这些文件为后缀的文件时,会自动重命名为zip文件。 当然可以下载后手动修改后缀,依然可以安装。 如果想下载后缀直接就是apk ipa的,可以修改 /usr/local/nginx/conf目录下的mime.types 增加如下配置,重启nginx生效 代码如下: application/vnd.android.p ···
Nginx 安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)

Nginx 安装笔记(含PHP支持、虚拟主机、反向代理负载均衡)

系统环境:RHEL5 [ 2.6.18-8.el5xen ] 软件环境: nginx-0.7.17 lighttpd-1.4.20.tar.gz pcre-6.6-1.1 pcre-devel-6.6-1.1 php-5.1.6-5.el5 参考下载地址: http://sysoev.ru/nginx/nginx-0.7.17.tar.gz (最新稳定版为0.6.32) http://www.lighttpd.net/download/lighttpd-1.4.20.tar.gz ########################################################################## 一、安装支持软件 1、安装lighttpd以提取spawn-fcgi (如果站点不包含php页面,可以不安装spaw-fcgi、PHP) shell> tar zxvf lighttpd-1.4.20.tar.gz shell> cd lighttpd-1.4.20/ shell> ./configure && make shell> cp -p src/spawn-fcgi /usr/sbin/spawn-fcgi 2、安装pcre和php(以下软件) 可使用RHEL5自带的rpm包安装,过程略。 二、安装nginx shell> tar zxvf nginx-0.7.17.tar.gz shell> cd nginx-0.7.17/ shell> ./configure --prefix=/opt/nginx --with-http_stub_status_module --with-http_ssl_module shell> make && make install shell> ln -sf /opt/nginx/sbin/nginx /usr/sbin/ 三、nginx运行控制 1、检查配置文件有无语法错误 shell> nginx -t 2、启动(不带任何参数直接运行即可) shell> nginx 3、重新加载nginx配置 shell> killall -s HUP nginx #//或者 killall -1 nginx 4、处理完当前请求后退出nginx shell> killall -s QUIT nginx #//或者 killall -3 nginx 四、nginx配置用例 1、常规配置 shell> vi /opt/nginx/conf/nginx.conf worker_processes 1; #//工作进程数 events { use epoll; #//增加该事件提高I/O性能 work_connections 4096; } http { include mime.types; default_types application/octet-stream; sendfile on; tcp_nodelay on keepalive_timeout 60; server { listen 80; #//设置监听端口,注意不要和Apache等其他Web程序冲突 server_name www.linux.org; #//指定使用的主机名 charset utf-8; #//指定站点文件的默认编码 location / { root html; #//设置网站根目录 index index.html index.html; } error_page 500 502 503 504 /50x.html location = /50x.html { root html; } } } 2、添加状态监控 shell> vi /opt/nginx/conf/nginx.conf #//增加以下内容 location ~ ^/NginxStatus/ { stub_status on; access_log off; } shell> killall -1 nginx #//使用浏览器访问 http://nginx_server_ip/NginxStatus/ 即可看到状态统计页面。(三个数字分别表示:总共处理连接数、成功创建的握手次数、总共处理的请求数) 3、通过FastCGI方式支持PHP语言 1)启动FastCGI服务(用php-cgi做实际处理php页面的程序,用spawn-fcgi是便于同时开启多个php-cgi进程――“-C”选项控制子进程数) shell>/usr/sbin/spawn-fcgi -a 127.0.0.1 -p 9000 -f /usr/bin/php-cgi -C 10 2)修改/opt/nginx/conf/nginx.conf配置文件,添加以下内容: location ~ .php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 3)重新加载配置 shell> killall -1 nginx 4、虚拟主机设置 修改nginx.conf文件,增加一个server {……}配置即可,每个虚拟主机的参数可以独立配置。 http { server { listen 80; server_name www.vhost1.com; access_log logs/vhost1.access.log main; location / { index index.html; root /var/www/vhost1; #//第1个虚拟主机的网页根目录 } } server { listen 80; server_name www.vhost2.com; access_log logs/vhost2.access.log main; location / { index index.html; root /var/www/vhost2; #//第2个虚拟主机的网页根目录 } } } 5、基于反向代理的负载均衡 修改nginx.conf文件,增加upstream配置,指定对应服务器群的IP和权重,并调整server段中的网页根目录配置。使访问nginx服务器的HTTP请求分散到Web群集中的服务器来处理。 http { upstream my_web_cluster { server 192.168.2.11:8000 weight=3; server 192.168.2.12:8000 weight=3; server 192.168.2.13:8000 weight=3; server 192.168.2.14:8000 weight=3; server 192.168.2.15:8000 weight=3; } server { listen 80; server_name www.domain.com; location / { proxy_pass http://my_web_cluster; proxy_set_header x-real-IP $remote_addr; } #//注:其他的location配置段(如关于.php文件的)需注释掉,否则可能影响该类文件的重定向。 } }
阿里云部署Ubuntu 1.4 Flask + WSGI + Nginx 详解

阿里云部署Ubuntu 1.4 Flask + WSGI + Nginx 详解

抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感觉就很不错,速度那是一个字:快。
为高负载网络优化Nginx和Node.js的方法

为高负载网络优化Nginx和Node.js的方法

在搭建高吞吐量web应用这个议题上,NginX和Node.js可谓是天生一对。他们都是基于事件驱动模型而设计,可以轻易突破 Apache等传统web服务器的C10K瓶颈。预设的配置已经可以获得很高的并发,不过,要是大家想在廉价硬件上做到每秒数千以上的请求,还是有一些工作要做的。 这篇文章假定读者们使用NginX的HttpProxyModule来为上游的node.js服务器充当反向代理。我们将介绍Ubuntu 10.04以上系统sysctl的调优,以及node.js应用与NginX的调优。当然,如果大家用的是Debian系统,也能达到同样的目标,只不过调优的方法有所不同而已。 网络调优 如果不先对Nginx和Node.js的底层传输机制有所了解,并进行针对性优化,可能对两者再细致的调优也会徒劳无功。一般情况下,Nginx通过TCP socket来连接客户端与上游应用。 我们的系统对TCP有许多门限值与限制,通过内核参数来设定。这些参数的默认值往往是为一般的用途而定的,并不能满足web服务器所需的高流量、短生命的要求。 这里列出了调优TCP可供候选的一些参数。为使它们生效,可以将它们放在/etc/sysctl.conf文件里,或者放入一个新配置文件,比如 /etc/sysctl.d/99-tuning.conf,然后运行sysctl -p,让内核装载它们。我们是用sysctl-cookbook来干这个体力活。 需要注意的是,这里列出来的值是可以安全使用的,但还是建议大家研究一下每个参数的含义,以便根据自己的负荷、硬件和使用情况选择一个更加合适的值。 代码如下: <SPAN style="FONT-SIZE: 14px; COLOR: #009900; FONT-FAMILY: Microsoft YaHei"> net.ipv4.ip_local_port_range='1024 65000' net.ipv4.tcp_tw_reuse='1' net.ipv4.tcp_fin_timeout='15' net.core.netdev_max_backlog='4096' net.core.rmem_max='16777216' net.core.somaxconn='4096' net.core.wmem_max='16777216' net.ipv4.tcp_max_syn_backlog='20480' net.ipv4.tcp_max_tw_buckets='400000' net.ipv4.tcp_no_metrics_save='1' net.ipv4.tcp_rmem='4096 87380 16777216' net.ipv4.tcp_syn_retries='2' net.ipv4.tcp_synack_retries='2' net.ipv4.tcp_wmem='4096 65536 16777216' vm.min_free_kbytes='65536' </SPAN> 重点说明其中几个重要的。 net.ipv4.ip_local_port_range 为了替上游的应用服务下游的客户端,NginX必须打开两条TCP连接,一条连接客户端,一条连接应用。在服务器收到很多连接时,系统的可用端口将很快被耗尽。通过修改net.ipv4.ip_local_port_range参数,可以将可用端口的范围改大。如果在/var/log/syslog 中发现有这样的错误: “possible SYN flooding on port 80. Sending cookies”,即表明系统找不到可用端口。增大net.ipv4.ip_local_port_range参数可以减少这个错误。 net.ipv4.tcp_tw_reuse 当服务器需要在大量TCP连接之间切换时,会产生大量处于TIME_WAIT状态的连接。TIME_WAIT意味着连接本身是关闭的,但资源还没有释放。将net_ipv4_tcp_tw_reuse设置为1是让内核在安全时尽量回收连接,这比重新建立新连接要便宜得多。 net.ipv4.tcp_fin_timeout 这是处于TIME_WAIT状态的连接在回收前必须等待的最小时间。改小它可以加快回收。 如何检查连接状态 使用netstat: netstat -tan | awk '{print $6}' | sort | uniq -c 或使用ss: ss -s NginX ss -s Total: 388 (kernel 541) TCP: 47461 (estab 311, closed 47135, orphaned 4, synrecv 0, timewait 47135/0), ports 33938 Transport Total IP IPv6 * 541 - - RAW 0 0 0 UDP 13 10 3 TCP 326 325 1 INET 339 335 4 FRAG 0 0 0 随着web服务器的负载逐渐升高,我们就会开始遭遇NginX的某些奇怪限制。连接被丢弃,内核不停报SYN flood。而这时,平均负荷和CPU使用率都很小,服务器明明是可以处理更多连接的状态,真令人沮丧。 经过调查,发现有非常多处于TIME_WAIT状态的连接。这是其中一个服务器的输出: 有47135个TIME_WAIT连接!而且,从ss可以看出,它们都是已经关闭的连接。这说明,服务器已经消耗了绝大部分可用端口,同时也暗示我们,服务器是为每个连接都分配了新端口。调优网络对这个问题有一点帮助,但是端口仍然不够用。 经过继续研究,我找到了一个关于上行连接keepalive指令的文档,它写道: 设置通往上游服务器的最大空闲保活连接数,这些连接会被保留在工作进程的缓存中。 有趣。理论上,这个设置是通过在缓存的连接上传递请求来尽可能减少连接的浪费。文档中还提到,我们应该把proxy_http_version设为"1.1",并清除"Connection"头部。经过进一步的研究,我发现这是一种很好的想法,因为HTTP/1.1相比HTTP1.0,大大优化了 TCP连接的使用率,而Nginx默认用的是HTTP/1.0。 按文档的建议修改后,我们的上行配置文件变成这样: 代码如下: upstream backend_nodejs { server nodejs-3:5016 max_fails=0 fail_timeout=10s; server nodejs-4:5016 max_fails=0 fail_timeout=10s; server nodejs-5:5016 max_fails=0 fail_timeout=10s; server nodejs-6:5016 max_fails=0 fail_timeout=10s; keepalive 512; } 我还按它的建议修改了server一节的proxy设置。同时,加了一个 p roxy_next_upstream来跳过故障的服务器,调整了客户端的 keepalive_timeout,并关闭访问日志。配置变成这样: 代码如下: server { listen 80; server_name fast.gosquared.com; client_max_body_size 16M; keepalive_timeout 10; location / { proxy_next_upstream error timeout http_500 http_502 http_503 http_504; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_pass http://backend_nodejs; } access_log off; error_log /dev/null crit; } 采用新的配置后,我发现服务器们占用的socket 降低了90%。现在可以用少得多的连接来传输请求了。新的输出如下: ss -s Total: 558 (kernel 604) TCP: 4675 (estab 485, closed 4183, orphaned 0, synrecv 0, timewait 4183/0), ports 2768 Transport Total IP IPv6 * 604 - - RAW 0 0 0 UDP 13 10 3 TCP 492 491 1 INET 505 501 4 Node.js 得益于事件驱动式设计可以异步处理I/O,Node.js开箱即可处理大量的连接和请求。虽然有其它一些调优手段,但这篇文章将主要关注node.js的进程方面。 Node是单线程的,不会自动使用多核。也就是说,应用不能自动获得服务器的全部能力。 实现Node进程的集群化 我们可以修改应用,让它fork多个线程,在同一个端口上接收数据,从而实现负载的跨越多核。Node有一个cluster模块,提供了实现这个目标所必需的所有工具,但要将它们加入应用中还需要很多体力活。如果你用的是express,eBay有一个叫cluster2的模块可以用。 防止上下文切换 当运行多个进程时,应该确保每个CPU核同一时间只忙于一个进程。一般来说,如果CPU有N个核,我们应该生成N-1个应用进程。这样可以确保每个进程都能得到合理的时间片,而剩下的一个核留给内核调度程序运行其它任务。我们还要确保服务器上基本不执行除Node.js外的其它任务,防止出现CPU 的争用。 我们曾经犯过一个错误,在服务器上部署了两个node.js应用,然后每个应用都开了N-1个进程。结果,它们互相之间抢夺CPU,导致系统的负荷急升。虽然我们的服务器都是8核的机器,但仍然可以明显地感觉到由上下文切换引起的性能开销。上下文切换是指CPU为了执行其它任务而挂起当前任务的现象。在切换时,内核必须挂起当前进程的所有状态,然后装载和执行另一个进程。为了解决这个问题,我们减少了每个应用开启的进程数,让它们公平地分享 CPU,结果系统负荷就降了下来: 请注意上图,看系统负荷(蓝线)是如何降到CPU核数(红线)以下的。在其它服务器上,我们也看到了同样的情况。既然总的工作量保持不变,那么上图中的性能改善只能归功于上下文切换的减少。
Nginx设置wordpress伪静态的方法示例

Nginx设置wordpress伪静态的方法示例

摘点度娘对伪静态的解释:伪静态是相对真实静态来讲的,通常我们为了增强搜索引擎的友好面,都将文章内容生成静态页面,但是有的朋友为了实时的显示一些信息。或者还想运用动态脚本解决一些问题。不能用静态的方式来展示网站内容。但是这就损失了对搜索引擎的友好面。怎么样在两者之间找个中间方法呢,这就产生了伪静态技术。就是展示出来的是以html一类的静态页面形式,但其实是用ASP一类的动态脚本来处理的。
详解如何部署H5游戏到nginx服务器

详解如何部署H5游戏到nginx服务器

在自学游戏开发的路上,最有成就感的时刻就是将自己的小游戏做出来分享给朋友试玩,原生的游戏开可以打包分享,小游戏上线流程又长,那 H5 小游戏该怎么分享呢?本文就带大家通过 nginx 将构建好的 H5 游戏托管的阿里云上。
Nginx Gzip模块启用和配置指令详解

Nginx Gzip模块启用和配置指令详解

Nginx的gzip模块是内置的,在http中添加如下配置: 代码如下:gzip on;gzip_min_length  5k;gzip_buffers     4 16k;gzip_http_version 1.0;gzip_comp_level 3;gzip_types       text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;gzip_vary on;
Nginx反向代理及负载均衡如何实现(基于linux)

Nginx反向代理及负载均衡如何实现(基于linux)

这里来试验下nginx的反向代理。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
使用nginx配置基于域名的虚拟主机实现​

使用nginx配置基于域名的虚拟主机实现​

1、什么是虚拟主机 虚拟主机使用特殊的技术,将一台运行的服务器,在逻辑上划分成多个主机。这样做主要是能让一台物理服务器上运行多个网站程序,这样就可以利用起来服务器剩余的空间。充分发挥服务器的作用。虚拟主机间,是完全独立的。