浅谈apache和nginx的rewrite的区别
发布网友
发布时间:2022-03-20 21:25
我来回答
共2个回答
懂视网
时间:2022-03-21 01:46
产品型号:Thinkpad E15
系统版本:centos8
区别:apache和nginx处理php文件的方式不一样。
1:Apache是通过libphp5.so这个模块来处理php文件
2:Nginx是通过php-fpm这个服务来处理php文件
Apache:
Nginx:
Apache的libphp5.so随着Apache服务器一起运行,而Nginx和php-fpm是各自独立运行,所以在运行过程中,Nginx和php-fpm都需要分别启动!
Nginx相对于Apache的优点:
轻量级,同样是 web 服务,比Apache 占用更少的内存及资源 ;高并发,Nginx 处理请求是异步非塞的,而Apache 则是阻塞型的,在高并发下Nginx 能保持低资源低消耗高性能;高度模块化的设计
编写模块相对简单;社区活跃,各种高性能模块出品迅速。
Apache 相对于Nginx 的优点:
rewrite,比Nginx 的rewrite强大;模块超多,基本想到的都可以找到;少bug ,Nginx 的bug 相对较多;超稳定
存在就是理由,一般来说,需要性能的web 服务,用Nginx 。如果不需要性能只求稳定,那就Apache。Nginx处理动态请求是弱项,一般动态请求要Apache去做,Nginx只适处理静态网页或反向代理。
总结:
1. Apache是通过libphp5.so这个模块来处理php文件
2. Nginx是通过php-fpm这个服务来处理php文件
3. Nginx处理动态请求是弱项,一般动态请求要Apache去做,Nginx只适处理静态网页或反向代理。
热心网友
时间:2022-03-20 22:54
1. 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; }
2. 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规则挺简单的,如果改完规则,使用"nginx -t"命令检查发现nginx.conf配置文件有语法错误,那么可以尝试给条件加上引号。