Nginx 不支持 .htaccess,所有配置须集中于主配置或 server 块;重写用 try_files 或 rewrite;禁止访问敏感文件用 return 403 正则匹配;禁目录浏览需 autoindex off 并设 index;密码保护用 auth_basic 配合 .htpasswd 文件。

Apache 的 .htaccess 文件在 Nginx 中并不存在,因为 Nginx 不支持分布式、目录级的配置文件。所有配置必须集中写在主配置文件(如 /etc/nginx/nginx.conf)或站点的 server 块中(如 /etc/nginx/sites-available/example.com)。要实现 .htaccess 的常见功能,需手动将对应规则转换为 Nginx 语法并放入合适的 location 块内。
重写规则(如 WordPress 或 Laravel 的伪静态)
Nginx 不识别 RewriteRule,需用 try_files 或 rewrite 指令替代。大多数 PHP 应用依赖前端控制器模式,推荐使用 try_files,更高效且不易出错。
- WordPress:在 server 块中添加
try_files $uri $uri/ /index.php?$args;
}
- Laravel:类似,但注意 index.php 路径和 fastcgi_param 配置
try_files $uri $uri/ /index.php?$query_string;
}
禁止访问特定文件(如 .env、.git、.htaccess)
Apache 中常用 deny from all,Nginx 用 return 403 或 deny all 实现,推荐放在 server 或 location 上层以覆盖所有匹配路径。
- 禁止访问敏感文件(可批量匹配)
return 403;
}
- 注意:正则 location 优先级高于普通 location,确保不意外拦截正常请求
目录浏览禁用与默认页设置
Apache 默认开启 Options Indexes,Nginx 默认关闭目录浏览;若误启过,检查是否有 autoindex on 并删掉。同时明确指定默认首页:
- 禁用目录列表(确保无 autoindex)
- 设置默认索引文件(顺序影响匹配)
autoindex off;
密码保护目录的等效做法
Nginx 不支持 .htpasswd 的运行时解析,但可通过 auth_basic 指令配合系统级密码文件实现相同效果:
- 先用
htpasswd(Apache 工具)或openssl生成密码文件 - 在对应 location 中启用认证
auth_basic "Restricted Area";
auth_basic_user_file /etc/nginx/.htpasswd;
}
- 注意路径权限:Nginx 主进程需有读取该文件的权限(通常属主 root,组 nginx,权限 640)

















