nginx: [emerg] директива location не разрешена здесь в /etc/nginx/nginx.conf:16 - PullRequest
0 голосов
/ 12 октября 2019

Я новичок в NGINX и пытаюсь настроить минимальную работоспособность. Поэтому я пытался запустить https с помощью nginx и supervisor (в этом примере). Но я не могу правильно настроить Nginx и получаю следующую ошибку:

Error Code: nginx: [emerg] "location" directive is not allowed here in /etc/nginx/nginx.conf:16 nginx: configuration file /etc/nginx/nginx.conf test failed . 



 GNU nano 2.0.9          File: /etc/nginx/nginx.conf                           

#user  nginx;
worker_processes  1;

#error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

#pid        /var/run/nginx.pid;

include /etc/nginx/modules.conf.d/*.conf;

events {
    worker_connections  1024;
}
location ~^/wp-json/ {
    rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
}
http {
    include   mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    #tcp_nodelay        on;

    #gzip  on;

 #gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    server_tokens off;

    include /etc/nginx/conf.d/*.conf;
}

# override global parameters e.g. worker_rlimit_nofile
include /etc/nginx/*global_params;

Это выглядит правильно. серверная директива находится в http, как и должно быть. И http является родительской директивой. Что я делаю не так?

1 Ответ

0 голосов
/ 12 октября 2019

Не совсем уверен, что вы подразумеваете под "директивой сервера в http" - я предполагаю, что вы имеете в виду, что находится в файлах, включенных в /etc/nginx/conf.d/*.conf.

В любом случае, если вы пытаетесьчтобы усилить директиву server в одном из включенных файлов, вам придется сделать это там. Если вы хотите определить новый сервер, вам потребуется блок в пределах http. И в этом блоке вы добавите свой location блок.

http {
  #...
  server {
    #...
    location ~^/wp-json/ {
      #...
      rewrite ^/wp-json/(.*?)$ /?rest_route=/$1 last;
      #...
    }
    #...
  }
  #...
}

Если вы только начинаете, возможно, это хороший ресурс: http://nginx.org/en/docs/beginners_guide.html?

...