Ste*_*lsh 5 directive nginx include
我在 /etc/nginx/conf.d/default.conf 中有一个足够标准的 nginx conf 文件,其中有一个包含另一个文件的服务器块,例如
server {
...
include /etc/nginx/conf.d/nginx-redirects.conf;
...
}
Run Code Online (Sandbox Code Playgroud)
nginx-redirects.conf 文件,顾名思义,只执行一长串重定向,例如
rewrite ^/.../.../...$ https://www.example.com/.../.../... permanent;
rewrite ^/.../.../...$ https://www.example.com/.../.../... permanent;
...
Run Code Online (Sandbox Code Playgroud)
但是当我重新启动nginx时,出现以下错误:
nginx: [emerg] /etc/nginx/conf.d/nginx-redirects.conf:1 中不允许“重写”指令 nginx: 配置文件 /etc/nginx/nginx.conf 测试失败
我尝试将我的一长串重定向封装在 nginx-redirects.conf 中的一个位置/块中,但使用“位置”而不是“重写”时出现了相同的错误。然后,我尝试将位置/块封装在服务器块中,但使用“服务器”而不是“位置”时出现了相同的错误。
有人知道我做错了什么吗?
我刚刚遇到这个问题,答案如评论中所述 - 目录中的配置文件conf.d包含在nginx.conf. 这意味着该rewrite指令试图在http {}不允许的块中使用。
解决方案是将特定于站点的配置文件放在其他地方。由于nginx.conf仅直接包含该目录中的文件,因此您的文件可以位于子目录中,例如/etc/nginx/conf.d/sites/mysite-redirects.conf