Nginx无效条件“=”

时间:2017-01-20 10:58:49

标签: nginx nginx-location

我正在使用Ngnix以下配置:

upstream sync {                                                                 
    server couchbase-sync:4984;                                                 
}                                                                               

server {                                                                        
    listen 4984;                                                                
    server_name ${WEBAPP_HOST};                                                 
    add_header 'Access-Control-Allow-Origin' '*';                               
    add_header 'Access-Control-Allow-Methods' '*';                              
    add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';                                    

    location / {                                                                
        if ($request_method = OPTIONS) {                                       
            return 204;                                                        
        }                                                                      
        proxy_pass http://sync;                                                 
    }                                                                           
}                                                                               

我不想重定向OPTIONS请求,但我有一个错误:

nginx_1 | 2017/01/20 09:23:40 [emerg] 9#9: invalid condition "=" in /etc/nginx/conf.d/webapp.conf:13 nginx_1 | nginx: [emerg] invalid condition "=" in /etc/nginx/conf.d/webapp.conf:13

如何解决我的问题? Official Doc

感谢您阅读

2 个答案:

答案 0 :(得分:0)

http methods中限制nginx的最佳做法:

limit_except GET {
    allow 192.168.1.0/24;
    deny  all;
}

以上示例仅允许提供IP Range的所有内容。对于其他客户,只有GET method可用。

您可以在位置块中使用它。

可用方法:

GET, HEAD, POST, PUT, DELETE, MKCOL, COPY, MOVE, OPTIONS, PROPFIND, PROPPATCH, LOCK, UNLOCK, or PATCH

答案 1 :(得分:0)

在我的案例中,某些字符存在问题,如Richard Smith所说。 在docker容器中创建runner.os文件时遇到了这个问题。我当时在bash中使用nginx.conf命令,然后粘贴复制的文本。

使用echo创建(粘贴并保存)后,问题消失了。