用 NginX 代替 Apache 来搭建更快的服务器

我对 NginX 的了解始于 张宴 的文章《Nginx 0.5.33 + PHP 5.2.5(FastCGI)搭建胜过Apache 10倍的Web服务器(第2版)》,实际上目前 NginX 的最新版本已经是 0.6.31 了,现在这个文章的第三版是: Nginx 0.6.31 + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器(第3版)[原创]
NginX 到底是什么,请大家阅读上面的文章去了解,我就不复制了。
我要说的是:我认为 NginX 绝对是一个很有前途的服务器软件。
最近,本站总版主 Tiger 已经用 NginX 成功搭建了一个服务器,现在测试之中。有兴趣的朋友可以通过访问 https://www.kongtong.net/
来体验一下。
今天晚上,我们遇到一个难题就是:NginX 里面没有 Apache 那个 mod_rewrite 模块,与之对等的是一个叫做 Rewrite Module
的模块。其语法应该是与 Apache 截然不同的。所以不能直接使用针对 mod_rewrite.so 而写的规则。
后来找到一篇文章: R
已邀请:

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

rewrite  ^/administrator/(.*)$  /administrator/$1  last;
方法笨了点,但是有效
我当时看这个的时候一直卡在只能使用index.php/这样的链接,否则模板什么的都没法用,所以一直就没再看

刘备曹操 - 古今多少事,都付谈笑中

赞同来自:

速度是很快,不知道在机房还是什么线路? www.kongtong.net/崆峒山,Tiger,呵呵

刘备曹操 - 古今多少事,都付谈笑中

赞同来自:

呵呵,谢谢 hoping 的指点,高手就是不一样啊!
昨晚我也想到了通过 rewriteRule 来限制对 domain/administrator 的 rewrite,但是我不懂语法,哈哈。 今天有空测试一下这个方法。
正巧 tiger 也在线上,刚才我们测试了一下,使用 hoping 的方法后,打开 kongtong.net/administrator
竟然显示了前台首页。
不知道问题在哪里,目前还没有找到完美的解决方案。
我估计还是要修改 .htaccess 文件。

刘备曹操 - 古今多少事,都付谈笑中

赞同来自:

joe137 也知道崆峒山?看来你跟 tiger 距离不远?
服务器接的是 10MB 光纤,放在某单位机房。

妥协 - 不会轻易妥协的人不愿意将就的人任性自由的人总是活得比较累

赞同来自:

呵呵,咱们的配置不同啊。我是使用的domain/index.php/xxxxxx方式地,所以就没有了那个判断了把这一行加在你的  if (!-e $request_filename) {
      rewrite ^/(.*)$ /index.php?q=$1 last;
    }的下面呢?

追梦人 - 梦想每个人都有,但不是每个人都有勇气去坚信,我有

赞同来自:

哈哈,你们现在和我的问题 一样了,模板的CSS没法用,这个问题已经困扰俺N久了
所以就只好一直使用 domain/index.php/xxxx这个形式了
期待你们能够解决这个问题

妥协 - 不会轻易妥协的人不愿意将就的人任性自由的人总是活得比较累

赞同来自:

奇怪,难道是域名或者虚拟机设置的问题,kongtong.net和www.kongtong.net访问后的效果居然不一样?

不是本人 - no no no!

赞同来自:

多谢提醒!kongtong.net 访问时竟然没有调用 CSS,成了“裸奔”了,呵呵。
我们再找找原因。

孤独者 - 世界属于那些勤于思考的人,更属于那些善于行动的人

赞同来自:

建议还是先不要在后台设
使用Apache的重写模式:mod_rewrite
了。嘿嘿,估计还是目录被rewrite了,因为我再强制性的加上一条关于templates的又好了

孤独者 - 世界属于那些勤于思考的人,更属于那些善于行动的人

赞同来自:

但是如果在后台不启用 mod_rewrite,前台的 URL 就带一个 /index.php/ , 对吧?我觉得比较难看。
你处理 templates 目录的代码是怎样的?贴出来学习一下。谢谢!

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

rewrite ^/j15/index.php/(.*)$  /j15/index.php?q=$1 last;
只有一条。嘿嘿,简单得多啦

妥协 - 不会轻易妥协的人不愿意将就的人任性自由的人总是活得比较累

赞同来自:

joe137 也知道崆峒山?看来你跟 tiger 距离不远?
服务器接的是 10MB 光纤,放在某单位机房。
呵呵,崆峒山在我家乡的另一头,还是有点远
很强的技术贴,Good Good Study

QQ被盗了

赞同来自:

解决了,呵呵,感谢hoping,
在rewrite规则前面加了一句rewrite  ^/administrator(.*)$  /administrator$1  last;

追梦人 - 梦想每个人都有,但不是每个人都有勇气去坚信,我有

赞同来自:

现在网站的后台可以正常打开,前台也看到了 SEF URL。但是有一个新问题,就是无法输出 PDF 了。
当我点击 PDF 按钮时,出现下面的错误提示:TCPDF error: Could not include font definition file
看来这个方案还有缺陷,希望大家继续讨论,改进 rewriterules。

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

排除language目录也不行!

QQ被盗了

赞同来自:

呵呵,我倒没测试过这个,至少还需要有lib.....、modu....、plugins、compontents这几个系统目录

3P网络 - 背着回忆的旅游人,即使是再细微的风景,也会留在心中的一个角落~

赞同来自:

joomla和nginx 谁在一起用过? https://www.lamppr.com/joomla
我的一个

孤独者 - 世界属于那些勤于思考的人,更属于那些善于行动的人

赞同来自:

nginx的速度还是相当不错的。

QQ被盗了

赞同来自:

关于 NginX 的讨论一年前我们就有了,因此将帖子合并到这里。
毫无疑问,NginX 做服务器比 Apache 更快速,更高效。但是目前一个难点就是,还没有针对 NginX 的 rewrite 规则。这样就无法启用 Joomla 的 SEF 功能。
如果哪位高手能解决 Joomla 在 NginX 服务器上的 .htaccess 重写(rewrite)规则,我相信一定能促进 NginX 的应用。

要回复问题请先登录注册