高性能 Web 服务器 Nginx 及相关新技术的应用实践 北京金山软件 逍遥网 张宴 2009.10.

Slides:



Advertisements
Similar presentations
●公司簡介. ●公司組織 行銷 企劃部 行銷 企劃部 研發 設計部 研發 設計部 視覺 設計部 視覺 設計部 媒體 製作部 媒體 製作部 行動 裝置部 行動 裝置部 執行長 總經理 管理部 本公司組織人力配置除董事長、執行長、總經理外,共 有六大部門,分別為研發部 6 人、管理部 4 人、視覺設計部.
Advertisements

模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
1 自然人憑證 結合人事差假管理系統 指導老師:丁德榮 教授 作者:何岳剛、蘇巨鋒、廖偉吏、鄭致瑋、湯媛喬、李封儒 報告人:廖偉吏 彰化師範大學 資訊工程學系 報告日期: 95/11/2.
1 网站设计理念 大连理工大学创新实验学院 优秀网站展示 - LAMP 类网站
LOGO 流管系研討室簡報 國立勤益科技大學 電子商務應用研討室 研 討 室 ( M302 ). 研討室教育目標  運用網際網路與企業電子化等技術,將資訊科技導入應用於流通服務產業 ,拓展商務機會,並從而探討人員、科技、組織之間的教學與研究議題。 培育學生生具備:  電子商務、虛擬通路規劃與經營能力.
白玉苦瓜 余光中.
中华字库的云输入法 王勇 基础软件国家工程研究中心
第3章 电子商务的技术基础 3.1 电子商务与计算机网络技术 3.2 电子商务与Web技术 3.3 电子数据交换(EDI)技术
Bennett Hong For 2012华东架构师大会 Nov 18,2012
第6章 数据库管理软件Access 年秋.
分布式系统 Distributed Systems 第 12 讲 “大型”网站架构设计 Lecture 12 Large Scale Website Architecture 王晓阳、张 奇 复旦大学 计算机科学技术学院.
淘宝海量数据产品技术架构 张轩丞(朋春) 淘宝网-数据平台与产品部.
第5章 关系数据库标准语言SQL 主讲:张丽芳.
十一 ASP对数据库的访问.
龙芯多媒体电脑教室培训 龙梦极域电子教室 江苏龙芯梦兰科技股份有限公司.
应用性能管理提升客户体验 龙珠客户案例分享 肖澍 云智慧公司.
第2讲 Transact-SQL语言.
数据库技术 实践.
WordPress 系统优化 优雅、稳定、快速 陈少钧 2007年9月1号北京.
大型、高负载网站架构和应用初探.
云智慧助力在线医疗服务性能优化 —让IT运营更简单 2015年4月 云智慧科技(北京)有限公司.
第8章 SELECT敘述的基本查詢 8-1 SELECT查詢指令 8-2 SELECT子句 8-3 FROM子句 8-4 WHERE子句
轻量级HTTP服务器/反向代理服务器nginx
汇报大纲 一、报送系统总体介绍 二、自查及检查评分报送流程 三、自查及检查方法及关键点 四、建议及注意事项.
第4章 关系数据库标准语言SQL 4.1 SQL语言概述 4.2 SQL数据查询功能 4.3 SQL数据操作功能 4.4 SQL数据定义功能.
Web程序设计基础 太原理工大学 计算机科学与技术学院 林福平 求实创新
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
Apache PHP MySQL 介紹與安裝設定 NIT 戴琬諭 NIT 林佳保.
文科计算机小公共课规划教材 Access 程序设计.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
天涯运维的那些事 网络系统部.天涯.
WEB常见漏洞与挖掘技巧研究 广东动易网络——吴建亮
网页设计师职位需求.
第3章 数据查询与SQL命令.
資料庫管理 資管二 賴柏融.
苏州大汇信息科技有限公司 招聘简介.
CDM Project Management Database Development
Selenium 一个用于Web应用程序测试的工具 Robin Ren
輕量級伺服器設置 1.HFS檔案伺服器架設實務與演練 2.AppServ與網路架站概說 3.AppServ+Xoops架設實務與演練
第六章 學習SQL語言.
网站设计 前端 入门学习.
第 8 章 資料的 新增、修改與刪除.
精通redis数据库开发、管理与优化 第1讲 什么是redis 讲师:黄锡峰.
資料庫安全 (Database Security)
第一組 指導教授:潘仁義老師 組 員:方明建 盧宗宏
HTTPS改造项目 阿里技术保障部-PE1部-千山 2014/9/18.
Cloud (AWS) 產品放置 ex.巴士, 球場, 旅館 …. 客戶需求SW模組化 1.客製化需求 2.Web技術
操作資料庫 教授:楊維邦 教授 助教:黃存賢 陳廷宣.
SQL SERVER 一些经典语句 1.
賣場與網站設計 EC-IC 2010最佳賣場設計奬第一名觀摩 EC-IC 2010最佳賣場設計奬第三名觀摩 其他組別觀摩
网 站 设 计 与 建 设 Website design and developments
SQL Injection (資料隱碼) 學生:a 吳倩瑜 指導教授:梁明章.
第20章 MySQL数据库.
Windows服务器操作系统:2003 市场占有率仍稳居第一
PHP +MySQL快速入門 Lesson 3.
Python联合服务器的使用.
电子商务专业课程 电子商务应用技术 Application of Technology On Electronic Commerce.
第三章 HTML相关技术基础知识 纵观各种动态页面开发技术,无论是JSP、ASP还是PHP都无 法摆脱HTML的影子。这些动态的页面开发技术无非是在静 态HTML页面的基础上添加了动态的可以交互的内容。HTML 是所有动态页面开发技术的基础。在接下来的章节将要详 细介绍的就是HTML相关的一系列技术,包括HTML、
第18章 SQL結構化查詢語言 18-1 SQL語言的基礎 18-2 SQL的查詢指令 18-3 SQL子查詢與合併查詢.
中華生活商圈 商家管理系統 指導老師:王素華老師 學 生: 陳逸文 張治仁.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
3. SQL语言的应用 3.1 SQL历史和优点 3.2 数据查询 3.3 数据操纵.
第14章 SQL数据查询与操纵 内容提要 本章知识点
SQL查询语句 蔡海洋.
第三章 SQL Server数据管理.
Lesson 4 :基礎應用一(計數器) (2005/01/27).
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
W3C标准网页制作 主讲教师:张 涛.
第4章 数据查询.
第1章 HTML基础 主讲人:刘泰然 经济管理学院.
Presentation transcript:

高性能 Web 服务器 Nginx 及相关新技术的应用实践 北京金山软件 逍遥网 张宴

什么是 Nginx ? Nginx (“engine x”) 是俄罗斯人 Igor Sysoev( 塞索 耶夫 ) 编写的一款高性能的 HTTP 和反向代理服务 器。 Nginx 已经在俄罗斯最大的门户网站 ── Rambler Media ( )上运行了 4 年时间,同 时俄罗斯超过 20% 的虚拟主机平台采用 Nginx 作为 反向代理服务器。 在国内,已经有新浪博客、新浪播客、搜狐通行 证、网易新闻、网易博客、金山逍遥网、金山爱 词霸、校内网、 YUPOO 相册、豆瓣、迅雷看看等 多家网站、频道使用 Nginx 服务器。

Nginx 的优点① 1 、高并发连接:官方测试能够支撑 5 万并发连 接,在实际生产环境中跑到 2 ~ 3 万并发连接数。 2 、内存消耗少:在 3 万并发连接下,开启的 10 个 Nginx 进程才消耗 150M 内存 ( 15M*10=150M )。 3 、配置文件非常简单:风格跟程序一样通俗 易懂。 4 、成本低廉: Nginx 为开源软件,可以免费使 用。而购买 F5 BIG-IP 、 NetScaler 等硬件负载 均衡交换机则需要十多万至几十万人民币。

Nginx 的优点② 5 、支持 Rewrite 重写规则:能够根据域名、 URL 的不同,将 HTTP 请求分到不同的后 端服务器群组。 6 、内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不 会影响前端访问。 7 、节省带宽:支持 GZIP 压缩,可以添加 浏览器本地缓存的 Header 头。 8 、稳定性高:用于反向代理,宕机的概率 微乎其微。

单台 Nginx 支撑了高达 2.8 万的活动并发连接数 :30 ,金山游戏《剑侠情缘网络版 3 》临时维 护 1 小时,大量玩家上官网,论坛、评论、客服等动态应用 Nginx 服务器集群,每台服务器的 Nginx 活动连接数达到 2.8 万,这是本人遇到的 Nginx 生产环境最高并发值。

Nginx 的主要应用类别 1 、使用 Nginx 结合 FastCGI 运行 PHP 、 JSP 、 Perl 等程序 2 、使用 Nginx 作反向代理、负载均衡、规 则过滤 3 、使用 Nginx 运行静态 HTML 页、图片 4 、 Nginx 与其他新技术的结合应用

Nginx 在金山逍遥网中的应用案例 金山逍遥网 (xoyo.com) 是金山游戏官方网站, 为金山软件旗下的各 款游戏提供新闻资讯、 客户服务、在线充值、 视听互动、在线活动、 博客、相册、论坛、 玩家社区等内容建设 和在线服务支持。

金山逍遥网 Nginx 七层负载均衡的应用

Nginx 承担每个机房 Web 负载均衡服务

简单的 Nginx 负载均衡配置① …… upstream bbs_server_pool { server :80 weight=1 max_fails=2 fail_timeout=30s; server :80 weight=1 max_fails=2 fail_timeout=30s; server :80 weight=1 max_fails=2 fail_timeout=30s; server :80 weight=1 max_fails=2 fail_timeout=30s; } …… 在 nginx.conf 配置文件中,用 upstream 指令定 义一组反向代理 / 负载均衡后端服务器池。

简单的 Nginx 负载均衡配置② …… server{ listen80; server_name bbs.yourdomain.com *.bbs.yourdomain.com; location / { proxy_pass proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } access_log off; } ……

简单的 Nginx 负载均衡配置③ proxy_pass 用于指定 反向代理的服务器池。 proxy_set_header Host $host; 当后端 Web 服 务器上也配置有多个虚拟主机时,需要用 该 Header 来区分反向代理哪个主机名。 proxy_set_header X-Forwarded-For $remote_addr; 如果后端 Web 服务器上的程 序需要获取用户 IP ,请从该 Header 头获取。

Nginx 负载均衡的双机热备

通常情况下的负载均衡 HA 高可用 优点:实现了双机热备、故障自动转移。 缺点:备机服务器处于闲置状态,浪费了硬件资源。

逍遥网 Nginx 负载均衡双机互备 正常情况下, 两台 Nginx 负 载均衡服务器 全部处于活动 状态,对外提 供服务。

服务器①绑定 IP 别名 /sbin/ifconfig eth0:ha broadcast netmask up /sbin/route add -host dev eth0:ha1 /sbin/arping -I eth0 -c 3 -s 在服务器①的外网网卡 eth0 上,绑定了一个 虚拟 IP ,绑定完成后发送 arping 包给 网关。

服务器②绑定 IP 别名 /sbin/ifconfig eth0:ha broadcast netmask up /sbin/route add -host dev eth0:ha2 /sbin/arping -I eth0 -c 3 -s 在服务器②的外网网卡 eth0 上,绑定了一个 虚拟 IP ,绑定完成后发送 arping 包给 网关。

新的 Nginx 双机互备 ( 发生故障时 ) 自动接管公网 虚拟 IP ,实现 故障转移

服务器①去除 IP 别名 /sbin/ifconfig eth0:ha broadcast netmask down 通过两台服务器之间的互相检测机制,当 服务器①上的检测程序发现自身的 Nginx 无 法访问时,停止绑定虚拟 IP

服务器②接管原服务器①的虚拟 IP /sbin/ifconfig eth0:ha broadcast netmask up /sbin/route add -host dev eth0:ha1 /sbin/arping -I eth0 -c 3 -s 给网关发送 Arping 包,保证了网关上 IP 、 MAC 地址对应关系能够马上更改,能够做 到强行接管虚拟 IP 。

Nginx 负载均衡 URL 分发

硬件、软件 七层负载均 衡对比: NetScaler 与 Nginx

硬件、软件 七层负载均 衡对比: NetScaler 与 Nginx

根据不同的 URL 转发到不同服务器 server{ listen 80; server_name abc.domain.com; location ~ ^/admincp.php { proxy_pass proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; } location / { proxy_pass proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; }

Web 相关文件的实时自动同步

少量文件的多服务器自动同步 使用 Linux 2.6 内核的 inotify 监控 Linux 文件系 统事件。 利用开源的 lsync 监听某一目录,如果目录 内文件发生增、删、改,利用 Rsync 协议自 动同步到多台服务器。 lsyncd /data0/htdocs/hu.xoyo.com/data/ ::hu_data/ ::hu_data/ ::hu_data/ ::hu_data/

大量文件的多服务器自动同步 使用 Linux 2.6 内核的 inotify 监控 Linux 文件系 统事件。 修改可监控的最大目录数量 echo > /proc/sys/fs/inotify/max_user_watches 金山逍遥网开发的 sersync 文件自动同步程 序,适合大量文件的自动同步,并可以在 文件同步完成后,自动调用 CDN 缓存刷新接 口,刷新发生修改、删除的文件的访问 URL 。 用于:金山游戏官网的 CMS 发布系统。

Nginx 的 Web 缓存服务

Nginx 的缓存功能 Nginx 从 版本开始,支持了类似 Squid 的缓存功能; 缓存把 URL 及相关组合当作 Key ,用 md5 编码 哈希后保存; Nginx 的 Web 缓存服务只能为指定 URL 或状态 码设置过期时间,不支持类似 Squid 的 PURGE 指令,手动清除指定缓存页面; 采用 MMAP 实现,设置的缓存区大小不能超 过物理内存 +SWAP 的值。

反向代理中的 Nginx.conf 缓存配置① …… # 设置 Web 缓存区名称为 cache_one ,缓存空间大小为 2000MB , 1 天清理 一次缓存,单个文件超过 5m 不缓存。 proxy_cache_path /data0/proxy_cache_path levels=1:2 keys_zone=cache_one:2000m inactive=1d max_size=5m; # 注: proxy_temp_path 和 proxy_cache_path 指定的路径必须在同一分区 proxy_temp_path /data0/proxy_temp_path; upstream my_server_pool { server :80 weight=1 max_fails=2 fail_timeout=30s; server :80 weight=1 max_fails=2 fail_timeout=30s; } ……

反向代理中的 Nginx.conf 缓存配置② server { listen 80; server_name my.domain.com; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass } location ~.*\.(gif|jpg|jpeg|png|bmp|swf|js|css)$ { # 对图片、 JS 、 CSS 进行缓存,使用 Web 缓存区 cache_one proxy_cache cache_one;

反向代理中的 Nginx.conf 缓存配置③ # 对不同 HTTP 状态码缓存设置不同的缓存时间 proxy_cache_valid m; proxy_cache_valid 304 3m; proxy_cache_valid h; proxy_cache_valid any 1m; # 设置 Web 缓存的 Key 值, Nginx 根据 Key 值 md5 哈希存储缓存,这里根据 “ 域名、 URI 、客户端请求 Header 头中的 If-Modified-Since 信息 ” 组合成 Key 。 proxy_cache_key $host$request_uri$http_if_modified_since; # 反向代理,访问后端内容源服务器 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_pass } access_log off; }

Nginx 缓存功能的优点 对于修改实时性要求不高的图片、 Flash 、 CSS 样式文件、 JavaScript 文件,可以在 Nginx 反向代理 ( 负载均衡 ) 服务器上设置缓存,不 用每次请求都转发到后端 Web 服务器,加快 了响应速度。 减少了 Nginx 与后端 Web 服务器的连接数, 提高了 Nginx 处理性能。

Nginx 的 Rewrite 重写规则

Nginx Rewrite 规则相关指令 Nginx Rewrite 规则相关指令有 if 、 rewrite 、 set 、 return 、 break 等,其中 rewrite 是最关键的指令。 一个简单的 Nginx Rewrite 规则语法如下: rewrite ^/b/(.*)\.html /play.php?video=$1 break; 如果加上 if 语句,示例如下: if (!-f $request_filename) { rewrite ^/img/(.*)$ /site/$host/images/$1 last; }

Nginx 与 Apache 的 Rewrite 规则实例对比① 简单的 Nginx 和 Apache 重写规则区别不大,基本上能够完全兼容。例如: Apache Rewrite 规则: RewriteRule ^/(mianshi|xianjing)/$ /zl/index.php?name=$1 [L] RewriteRule ^/ceshi/$ /zl/ceshi.php [L] RewriteRule ^/(mianshi)_([a-zA-Z]+)/$ /zl/index.php?name=$1_$2 [L] RewriteRule ^/pingce([0-9]*)/$ /zl/pingce.php?id=$1 [L] Nginx Rewrite 规则: rewrite ^/(mianshi|xianjing)/$ /zl/index.php?name=$1 last; rewrite ^/ceshi/$ /zl/ceshi.php last; rewrite ^/(mianshi)_([a-zA-Z]+)/$ /zl/index.php?name=$1_$2 last; rewrite ^/pingce([0-9]*)/$ /zl/pingce.php?id=$1 last; 由以上示例可以看出, Apache 的 Rewrite 规则改为 Nginx 的 Rewrite 规则,其实 很简单: Apache 的 RewriteRule 指令换成 Nginx 的 rewrite 指令, Apache 的 [L] 标 记换成 Nginx 的 last 标记,中间的内容不变。

Nginx 与 Apache 的 Rewrite 规则实例对比② 如果 Apache 的 Rewrite 规则改为 Nginx 的 Rewrite 规则后,使用 nginx -t 命令检查发现 nginx.conf 配 置文件有语法错误,那么可以尝试给条件加上引 号。例如一下的 Nginx Rewrite 规则会报语法错误: rewrite ^/([0-9]{5}).html$ /x.jsp?id=$1 last; 加上引号就正确了: rewrite "^/([0-9]{5}).html$" /x.jsp?id=$1 last;

Nginx 与 Apache 的 Rewrite 规则实例对比③ Apache 与 Nginx 的 Rewrite 规则在 URL 跳转时有细微的区别: Apache Rewrite 规则: RewriteRule ^/html/tagindex/([a-zA-Z]+)/.*$ /$1/ [R=301,L] Nginx Rewrite 规则: rewrite ^/html/tagindex/([a-zA-Z]+)/.*$ permanent; 以上示例中,我们注意到, Nginx Rewrite 规则的置换串中 增加了 “ ,这是在 Nginx 中要求的。

Nginx 与 Apache 的 Rewrite 规则实例对比④ 另外, Apache 与 Nginx 的 Rewrite 规则在变量名称方面也有区别, 例如: Apache Rewrite 规则: RewriteRule ^/user/login/$ /user/login.php?login=1&forward= [L] Nginx Rewrite 规则: rewrite ^/user/login/$ /user/login.php?login=1&forward= last;

Nginx 与 Apache 的 Rewrite 规则实例对比⑤ Apache 与 Nginx Rewrite 规则的一些功能相同或类似的 指令、标记对应关系: Apache 的 RewriteCond 指令对应 Nginx 的 if 指令; Apache 的 RewriteRule 指令对应 Nginx 的 rewrite 指令; Apache 的 [R] 标记对应 Nginx 的 redirect 标记; Apache 的 [P] 标记对应 Nginx 的 last 标记; Apache 的 [R,L] 标记对应 Nginx 的 redirect 标记; Apache 的 [P,L] 标记对应 Nginx 的 last 标记; Apache 的 [PT,L] 标记对应 Nginx 的 last 标记;

Nginx 与 Apache 的多条件 Rewrite 示例① 允许指定的域名访问本站,其他域名一律跳转到 Apache Rewrite 规则: RewriteCond %{HTTP_HOST} ^(.*?)\.domain\.com$ RewriteCond %{HTTP_HOST} !^qita\.domain\.com$ RewriteCond %{DOCUMENT_ROOT}/market/%1/index.htm -f RewriteRule ^/wu/$ /market/%1/index.htm [L] Nginx 的 if 指令不支持嵌套,也不支持 AND 、 OR 等多条 件匹配,相比于 Apache 的 RewriteCond ,显得麻烦一些, 但是,我们可以通过下一页的 Nginx 配置写法来实现这 个示例:

Nginx 与 Apache 的多条件 Rewrite 示例② Nginx Rewrite 规则: if ($host ~* ^(.*?)\.domain\.com$) { set $var_wupin_city $1; set $var_wupin '1'; } if ($host ~* ^qita\.domain\.com$) { set $var_wupin '0'; } if (!-f $document_root/market/$var_wupin_city/index.htm) { set $var_wupin '0'; } if ($var_wupin ~ '1') { rewrite ^/wu/$ /market/$var_wupin_city/index.htm last; }

Nginx 与金山逍遥 TCSQL 的配合

一般数据库的缓存类型 一般数据库缓存分为四种: 1 、 Key/Value 单个对象缓存,如 Memcached 2 、列表缓存,就像论坛里帖子的列表 3 、记录条数的缓存,比如一个论坛板块里 有多少个帖子,这样才方便实现分页。 4 、复杂一点的 group , sum , count 查询, 比如一个论坛里按点击数排名的最 HOT 的帖 子列表。 第一种比较好实现,后面三种比较麻烦。

什么是 TCSQL 实时列表缓存数据库? TCSQL 是金山逍遥网技术支持部平台组以 Tokyo Cabinet DBM 为底层存储与索引,结合类似 Memcached 的 Key-Value 内存对象缓存,借鉴 SQL 语句 的 SELECT 、 INSERT 、 UPDATE 、 DELETE 思想与功能开发 的实时列表缓存数据库,可实现对列表页数据、记录 条数的实时缓存。 TCSQL 采用 HTTP GET/POST 协议+ JSON 数据交换格式在 客户端、服务器端之间进行数据交互。 利用我们编写的 MySQL UDF 扩展 + 触发器,我们可以在 MySQL 的某张表发生插入、更新、删除操作时,自动 将数据同步到 TCSQL 数据库,使得 TCSQL 可以当 MySQL 从库一样使用。

TCSQL 的查询速度 TCSQL 在 并发连接情况下的查询速度 (服务器为浪潮 NF190 服务器,两颗双核 Xeon(TM) CPU 2.80GHz 、 4GB 内存、 1 万转 SCSI 硬盘。): 主键查询并取出倒序第 1 条记录( “=” 运算): 次请求 / 秒 其他索引键查询并取出倒序第 1 条记录( “=” 运算): 次请求 / 秒

TCSQL 的查询速度 根据复合条件查询并取出倒序前 10 条记录: 8778 次请求 / 秒(相当于 SELECT * FROM table WHERE dateline >= 随机时间戳 AND idtype = ' 变换的文本 ' ORDER BY pkey DESC LIMIT 0,10 ) 统计符合查询条件的记录数量: 9160 次请 求 / 秒(相当于 SELECT count(*) FROM table WHERE dateline >= 随机时间戳 AND idtype = ' 变换的文本 ' )

找出瓶颈 浏览器端 -- 查询 --> 服务器端 Nginx + PHP + TCSQL Nginx 4000~13000 请求数 / 秒 PHP 500~1500 请求数 / 秒 TCSQL 5000~15000 请求数 / 秒 位于中间的 PHP(FastCGI) 不在一个量级上, 成为列表页查询请求的最大瓶颈。

抛弃制约性能的 PHP 中间层 浏览器端 JavaScript -- 查询 --> 服务器端 Nginx(rewrite 重写规则、 proxy_pass 反向代 理 ) + TCSQL 抛弃了中间制约整体性能的 PHP 层。 运行于浏览器端的 JavaScript 代码通过 Nginx 直接查询 TCSQL 数据库,取得数据并在网页 显示。 利用 Nginx 的 rewrite 重写规则控制对 TCSQL 的 访问权限。

谢谢!