Nginx是否支持.htaccess /重写规则?与Apache有何不同?


16

我使用Apache http服务器已经有一段时间了,最​​终与其他动态内容计算机一起迁移到静态内容服务器。

我想知道,nginx是否支持“ .htaccess”文件以及诸如mod_rewrite之类的东西?

因为我非常习惯语法,所以我想知道(语法)上的区别是什么,以及从Apache配置过渡到nginx的学习曲线。

Answers:


15

与mod_rewrite中的对应语法相比,nginx重写语法要干净得多:

mod_rewrite规则:

 RewriteRule ^[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 [QSA,L,NC]

成为nginx:

rewrite ^/[a-z0-9_-]*-f([0-9]+)/?(p([0-9]+)\.html)?$ /viewforum.php?f=$1&start=$3 last;

但是没有.htaccess支持...

编辑:另一个示例如何在nginx中支持http://example.com/~username/网址:

location ~ /~([a-zA-Z0-9]*)/(.*) {
    root /home/;
    autoindex on;
    index index.html;
    rewrite ^/~([a-zA-Z0-9]*)/(.*)$ /$1/www/$2 break;
}


4

看起来nginx确实具有mod_rewrite等价物,并且可以在这里找到文档。我自己没有使用过nginx,但是文档看起来完全不同,但是了解它在做什么并不难。维基似乎有很多例子。

我无法回答是否可以像使用Apache那样拥有每个目录的配置文件。如果可以的话,这不会让我感到惊讶,因为人们开始期望使用apache。


0

NGINX DOES支持通过“ include”指令在许多文件中进行配置。基本上,它会加载一个子配置并将其放置到位。它还支持小丑字符,因此轻松加载其中的许多字符。

唯一的限制(在我看来)是更改配置后需要重新加载。因此,拥有一部分配置的任何用户可能都需要权限来重新加载nginx config:

/etc/ini.d/nginx强制重新加载(在centos上)

我真的不知道是否有办法避免这种情况或以不同的方式进行操作,因为我在拥有很多应用程序(虚拟主机)的许多服务器上使用了NGINX,这些服务器都是我自己的。这意味着NGINX在共享主机上不是理想的选择。

不过,我真的很喜欢NGINX,因为配置比讨厌的XML文件清晰得多。我猜味道的问题。如果您的情况很重要,那么另一个好处显然是速度。

祝你好运

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.