私は、静的ファイルを提供するためにkubernetesクラスタに展開されたnginx podを持っています。さまざまな環境で特定のヘッダーを設定するには、envsubst
を使用してnginxを実行する前に、テンプレートから設定ファイルを生成するofficial nginx docker image docsの指示に従ってください。confの生成時に無限リダイレクトを行っているkubernetesドッカーのNginx
これは私のnginxのテンプレート(nginx.conf.template)である:私が最初にnginxのを開始する前に、nginxのconfのファイルを生成するKubernetesのdefault command override機能を使用
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
gzip on;
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/nginx.crt;
ssl_certificate_key /etc/nginx/ssl/nginx.key;
root /usr/share/nginx/html;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location ~ \.css {
add_header Content-Type text/css;
}
location ~ \.js {
add_header Content-Type application/x-javascript;
}
location/{
add_header x-myapp-env $MYAPP_ENV;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
server {
listen 80;
server_name _;
return 301 https://$host$request_uri;
}
}
。これは、設定の関連部分である:私は私のブラウザでERR_TOO_MANY_REDIRECTS
エラーを取得する要求を行う際に
command: ["/bin/sh"]
args: ["-c", "envsubst </etc/nginx/nginx.conf.template> /etc/nginx/nginx.conf && nginx -g 'daemon off;'" ]
Kubernetesが正常しかし、ポッドを展開します。
奇妙なことに、奇妙なことに、上記の(しかしadd_header
ディレクティブを除いて)ほぼ同じnginx.confを使用してコマンドオーバーライドを実行せずにコンテナをデプロイすると、うまく動作します。
感謝すべてのヘルプ(すべてのSSL証明書とファイルがそこには問題があってはならないので、喜んでビルド時にコンテナにコピーされて提供されます)。
nginxログには何がありますか? – kichik