nginx 支持 .htaccess / rewrite 规则吗?与 Apache 有何不同?

nginx 支持 .htaccess / rewrite 规则吗?与 Apache 有何不同?

我已经使用 Apache http 服务器很长一段时间了,最​​终与其他动态内容机器一起转向静态内容服务器。

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

由于我非常习惯该语法,所以我想知道(语法)差异是什么,以及从 Apache 配置转移到 nginx 的学习曲线是什么样的。

答案1

nginx 重写语法比 mod_rewrite 中的语法更简洁:

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 支持...

编辑:另一个如何支持的例子http://example.com/~用户名/nginx 中的 url:

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

答案2

看起来 nginx 确实有一个 mod_rewrite 等效项,并且可以找到文档这里。我自己没有用过 nginx,但文档看起来配置完全不同,但理解它在做什么应该不难。维基百科上似乎有很多例子。

我无法回答您是否可以像使用 apache 那样拥有每个目录的配置文件。如果可以,我也不会感到惊讶,因为人们在使用 apache 时已经习惯了这一点。

答案3

nginx 确实提供了重写功能,请检查NginxHttpRewrite模块

你想用 .htaccess 做什么?你可以使用以下命令设置 nginx 进行基本身份验证NginxHttpAuth基本模块但据我所知,配置指令只能存储在 nginx.conf 中

答案4

NGINX 确实支持通过“include”指令在多个文件中包含配置。基本上,它会加载子配置并将其放置到位。它还支持百搭字符,因此很容易一次性加载多个字符。

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

/etc/ini.d/nginx force-reload(在 centos 上)

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

尽管如此,我还是很喜欢 NGINX,因为配置比难看的 XML 文件清晰得多。我想这是个人喜好问题。另一个优点显然是速度,如果你的情况很重要的话。

祝你好运,mig

相关内容