我已经使用 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