#docker #nginx
Вопрос:
Я пытаюсь добавить заголовок CORS в свое приложение при развертывании его в облаке через docker, я получаю ошибку: nginx: [emerg] директива «сервер» запрещена здесь в /etc/nginx/conf.d/default.conf:1
Мой файл nginx
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
root https://srm-master.nonprod.com;
index index.html index.htm;
set $cors "";
if ($http_origin ~* (.*.ini.com)) {
set $cors "true";
}
server_name .ini.com;
location / {
if ($cors = "true") {
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS,
DELETE, PUT';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-
Alive,Content-Type';
}
}
}
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
Ответ №1:
На самом деле проблема не имеет никакого отношения к Docker
, причиной ошибки является конфигурация nginx. Потому nginx
что разрешите только один http
раздел, и он был определен по адресу /etc/nginx/nginx.conf
. Удалите http
раздел в своей конфигурации, и он должен быть обработан
server {
root https://srm-master.nonprod.com;
index index.html index.htm;
set $cors "";
if ($http_origin ~* (.*.ini.com)) {
set $cors "true";
}
server_name .ini.com;
location / {
if ($cors = "true") {
add_header 'Access-Control-Allow-Origin' "$http_origin";
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS,
DELETE, PUT';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep-
Alive,Content-Type';
}
}
}