请求协助将Apache用户目录重定向配置迁移至Nginx
请求协助将Apache用户目录重定向配置迁移至Nginx
没问题,这事儿不难,我帮你把Apache的规则转成Nginx的配置!
你原来的Apache规则是把http://host.domain.com/~userdir这类请求重定向到另一个主机的对应用户目录,在Nginx里用rewrite指令就能实现几乎完全一致的效果。
直接在处理host.domain.com的server块里添加下面的配置就行:
server { listen 80; server_name host.domain.com; # 和原Apache规则行为一致的临时重定向(302) rewrite ^/~(.+)$ http://anotherhost.domain.com/~$1 redirect; # 如果想要永久重定向(301),把上面的redirect换成permanent就行 # rewrite ^/~(.+)$ http://anotherhost.domain.com/~$1 permanent; }
我给你拆解下这个配置的逻辑:
^/~(.+)$这个正则表达式和你Apache里的^/~(.+)作用一样,会匹配所有路径以/~开头的请求,并且把~后面的内容(比如userdir)捕获到变量$1里redirect对应你Apache里的[R,L],会返回302临时重定向;如果需要永久重定向(适合长期迁移的场景),就换成permanent(对应Apache的[R=301,L])- 整个规则写在
server块里,会优先于其他location规则执行,确保所有符合条件的请求都能被正确重定向
举个实际例子:当有人访问http://host.domain.com/~jane,就会被自动跳转到http://anotherhost.domain.com/~jane,和你原来Apache的效果完全一样。
备注:内容来源于stack exchange,提问作者Eder Andrade
相关产品推荐
相关产品推荐

