OpenShift - nginx pod 作为 SSL 终止和负载均衡器

OpenShift - nginx pod as SSL termination and load balancer

过去,我在 Ubuntu 上为 nginx 使用了以下配置文件。它执行以下操作:

  1. SSL 终止
  2. 负载均衡器
  3. 插入自定义 header X-Nginx-header
  4. 记录调用
events { }

http {
    log_format main '$time_iso8601 - $remote_addr - "$http_user_agent" - "$request" - $request_id '
    '- $status - $body_bytes_sent - $request_time ';

    access_log /home/ubuntu/project-demo/logs/access.log main;
    error_log /home/ubuntu/project-demo/logs/error.log error;
    proxy_cache_path /data/nginx/cache keys_zone=one:10m;

    upstream demoapp {
        least_conn;
        server localhost:3001;
        server localhost:3002;
        server localhost:3003;
        server localhost:3004;
    }

    server {
        listen 443 ssl;

        ssl_certificate         /home/ubuntu/project-demo/certs/server.crt;
        ssl_certificate_key     /home/ubuntu/project-demo/certs/server.pem;
        ssl_protocols           TLSv1.1 TLSv1.2;
        ssl_ciphers             HIGH:!aNULL:!MD5;
        ssl_session_cache       shared:SSL:20m;
        ssl_session_timeout     4h;

        location / {
            proxy_set_header X-Nginx-header $request_id;
            proxy_pass http://demoapp/;
        }
    }
}

我想通过 nginx 在 OpenShift 集群中部署为 pod 来复制相同的内容。我可以看到 OpenShift 集群目录中列出的 nginx。当我尝试启动一个时,它会显示 GitHub 存储库的字段和示例存储库 - https://github.com/sclorg/nginx-ex.git

如何将此存储库用于上面显示的配置文件?

可以找到此映像的 nginx 1.14 版本的文档 here

这是一张 s2i 图片。 s2i 是一种构建机制,它采用源代码(在您的情况下是 nginx 配置)和基本 s2i 图像(在您的情况下是 sclorg nginx contianer 图像)并生成运行时图像(在您的情况下是带配置的 nginx 图像)。

根据上述 nginx s2i 图像的文档,如果您将 s2i 构建过程指向 VCS 存储库(或本地目录),其中包含以下任何文件,它们将自动被 nginx s2i 构建器使用图像以生成配置的运行时容器图像。

./nginx.conf-- The main nginx configuration file

./nginx-cfg/*.conf
Should contain all nginx configuration we want to include into image

./nginx-default-cfg/*.conf
Contains any nginx config snippets to include in the default server block

./nginx-start/*.sh
Contains shell scripts that are sourced right before nginx is launched

./
Should contain nginx application source code

在你的情况下,这意味着你可以将你的配置放在 nginx.conf 文件中以覆盖整个 nginx 配置,或者放在 ./nginx-cfg/*.conf 文件中以将你的配置添加到默认 nginx.conf 文件.