我将WORD
与:e |config/application.rb
一起使用,并希望word
将nginx
作为环境变量传递给docker-compose
。我创建了以下nginx配置文件:
docker-compose
SERVER_NAME
出于某种原因,nginx正在诅咒nginx
指令:
myconf.conf:
这是我的Dockerfile,您可以在其中看到此配置用作nginx默认站点:
# Environment variables are used to dynamically set SERVER_NAME
# from docker-defined environment variable. This logic is stolen from:
#
# https://docs.apitools.com/blog/2014/07/02/using-environment-variables-in-nginx-conf.html
# https://github.com/wantedly/nginx-image-server/blob/master/files/nginx.conf
env SERVER_NAME;
upstream django {
server workflows-django:8000;
}
server {
listen 80;
perl_set $server_name_from_env 'sub { return $ENV{"SERVER_NAME"}; }';
server_name $server_name_from_env;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
perl_set $server_name_from_env 'sub { return $ENV{"SERVER_NAME"}; }';
server_name $server_name_from_env;
ssl_certificate /etc/ssl/private/bostongene.crt;
ssl_certificate_key /etc/ssl/private/bostongene.key;
charset utf-8;
client_max_body_size 75M;
location /media {
alias /srv/workflows/media;
}
location /static {
alias /srv/workflows/static;
}
location / {
# We can talk to upstream django either via uwsgi or just http proxy
# uwsgi:
uwsgi_pass django;
include /etc/nginx/uwsgi_params;
# http proxy:
#proxy_set_header Host $host;
#proxy_pass http://django
}
}
env
为什么?
答案:让我解释一下,详细问题是什么。 2016/08/26 13:02:39 [emerg] 1#0: "env" directive is not allowed here in /etc/nginx/sites-enabled/default:7
文件用作Dockerfile:
,这不是根nginx配置。根nginx配置为FROM debian:latest
RUN apt-get update && apt-get install -y nginx \
ca-certificates \
gettext-base
COPY myconf.conf /etc/nginx/sites-available/default
COPY myconf.crt /etc/ssl/private/
COPY myconf.key /etc/ssl/private/
# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
EXPOSE 80 443
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]
,并且在myconf.conf
上下文中包含/etc/nginx/sites-available/default
:
nginx.conf
所以我的/etc/nginx/sites-available/default
语句实际上在http
上下文中,这是不正确的 - 它应该只写在根上下文中。
答案 0 :(得分:6)
https://bot.ngx.cc/logs/%23nginx/2015/01-January/%23nginx.01-31.log(使用" nginx bug"这里不允许使用env指令"")给了我答案。
正如server
directive 1 的存在证明的那样,这不是你的主要配置文件,而是要包含的一个块,很可能在http
{{3 }}。虽然context仅在main
上下文中有效。
<小时/> 1 如链接所示,
server
指令有几种类型,其中没有一种在main
上下文中有效