nginx - nginx: [emerg] "location" 指令在 /etc/nginx/nginx.conf:16 中是不允许的
问题描述
我是 NGINX 的新手,我正在尝试设置最小的工作。所以我尝试用 nginx 和主管运行 https(通过这个例子)。但我无法正确配置 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;
它看起来是正确的。server 指令应该在 http 中。http 是父指令。我做错了什么?
解决方案
不太确定“服务器指令在 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?
推荐阅读
- c# - 更改其他文本框时 WPF 绑定文本框值未更新
- ruby-on-rails - 在Rails中erb的文本字段中显示模型的所有ID
- python-3.x - 即使输入相同,相同的代码在主函数和用户定义的函数中使用时也会给出不同的输出
- javascript - D3:条形图的文本不出现
- javascript - 使用伊斯坦布尔插件构建代码时出错
- python - 如何在云端部署 selenium bot
- networking - ADFS / SSO - 高可用性实施
- angular - 如何在 Angular 中创建嵌套路由设置
- python - Python中“AttributeError:'list'对象没有属性'split'”的问题
- javascript - Sequelize:更改嵌套数据结构