当前位置: 首页 > 知识库问答 >
问题:

Nginx 未知指令“if”

阎昌勋
2023-03-14

在我的Nginx服务器上,为了节省时间,我做了etc/nginx/include.conf,并把这一行放在etc/nginx/sites-可用/site1.conf:

location / {
    include /etc/nginx/include.conf;
    try_files $uri $uri/ /index.php?page=$uri;
}

include.conf的内容:

if ($http_referer ~* (badreferers)) { 
        return 403; 
}

测试 conf 文件时,会出现以下错误:/etc/nginx/include.conf:1 中出现 [emerg] 未知指令“if”

当我将if语句直接放在etc/nginx/sites available/site1.conf中时,它不会给出错误。

这里怎么了?

更新:< code>nginx -V给出:

nginx版本:nginx/1.4.6(Ubuntu)由GCC4.8.4(Ubuntu 4.8.3-2ubuntu1~14.04.3)构建,启用TLS SNI支持配置参数:--with cc opt='-g-O2-fstack protector--param=ssp buffer size=4-Wformat-Werror=format security-D_FORTIFY_SOURCE=2'-带有ld opt='-Wl,--b符号函数-z,前缀=/usr/share/nginx--conf path=/etc是的。conf——http日志路径=/var/log/nginx/access。log——错误日志路径=/var/log/nginx/error。log--lock path=/var/lock/nginx。lock--pid路径=/run/nginx。pid--http客户端主体临时路径=/var/lib/nginx/body--http fastcgi临时路径=/var/lib/nginx/fastcgi--http代理临时路径=/var/lib/nginz/proxy--http scgi临时路径=//var/lib/nginx/uwsgi--带调试--带pcre jit--带-ipv6--带-http_ssl_module--带-http_这是一个很好的例子--dav_

共有3个答案

任飞龙
2023-03-14

看起来你在nginx配置文件中有这样一行

include /etc/nginx/*.conf;

因此,您的文件/etc/nginx/include.conf不仅包含在/etc/nginx/sites-available/site 1 . conf中,还包含在“if”指令无效并出现错误的其他地方。

裴翰学
2023-03-14

如果 是 http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#if 的一部分。您需要将重写模块添加到nginx中。

或者最好我们从nginx他们自己的官方软件包

http://nginx.org/en/linux_packages.html#stable

呼延博易
2023-03-14

你用的是老的nginx版。在modern 1.10.2上,您的配置工作正常。

我查了nginx的来源。“include”指令不只是被包含文件的内容所取代。根据上下文的不同,处理方式也会有所不同。所以对于你可以放入的文件肯定有一些限制。至少在你的nginx版本中是这样。正如nginx文档所说

包含的文件应由语法正确的指令和块组成。

 类似资料:
  • 问题内容: 我已经跟随该网站http://raspberrypihelp.net/tutorials/24-raspberry-pi- webserver 在我的Raspberry Pi上设置HTTP服务器nginx并尝试设置一个站点调用 **example.com** 。但是当我跑步时,它说 重新启动nginx:nginx:/etc/nginx/sites-enabled/example.com

  • 本文向大家介绍Nginx Location 指令简明指南,包括了Nginx Location 指令简明指南的使用技巧和注意事项,需要的朋友参考一下 Nginx 中的 Location 指令 是NginxHttpCoreModule中重要指令。Location 指令比较简单,但却是配置 Nginx 过程中不得不去了解的。 Location 指令,是用来为匹配的 URI 进行配置,URI 即语法中的"

  • 我一直在尝试使用AWS Amplify来生成GraphQLAPI和后端。我可以使用引导模式创建创建一个工作后端。我选择了Todo示例。我可以从Android Studio内置的应用程序中调用它。查询和突变工作正常。每当我使用Android Studio查看模式时。graphql在放大/backend/api/project/(其中project是项目的名称)中,我在尝试重新定义Todo和使用未声明

  • 嗨,我正在尝试使用Django实现elasticsearch。我正在学习本教程 https://www.codementor.io/samueljames/using-django-with-elasticsearch-logstash-and-kibana-elk-stack-9L4FWX138 我得到了, 键入“manage.py help”了解用法信息。 尝试使用cmd创建索引时 请帮忙

  • 本文向大家介绍nginx中的listen指令实例解析,包括了nginx中的listen指令实例解析的使用技巧和注意事项,需要的朋友参考一下 剧情回顾 上一篇文章我们分析了location指令的解析过程,简单的回顾一下这个内容:每个location对应一个ngx_http_core_loc_conf_t结构体,所有的location通过一个双向队列连接在一起。数据结构比较复杂。 listen指令 n

  • 本文向大家介绍nginx proxy_pass指令’/’使用注意事项,包括了nginx proxy_pass指令’/’使用注意事项的使用技巧和注意事项,需要的朋友参考一下 1. proxy_pass配置说明 不带/ 带/ 上面两种配置,区别只在于proxy_pass转发的路径后是否带 “/” 针对情况1,如果访问url = http://server/test/test.jsp,则被nginx代理