- downlad nginx :
wget http://nginx.org/download/nginx-1.9.9.tar.gz - download ldap_auth_module :
git clone https://github.com/kvspb/nginx-auth-ldap - decompression :
tar -zxvf nginx-1.9.9.tar.gz - move to nginx :
cd nginx-1.9.9 - configure :
./configure /etc/nginx --conf-path=/etc/nginx/nginx.conf \ --sbin-path=/usr/bin/nginx \ --pid-path=/run/nginx.pid \ --lock-path=/run/lock/nginx.lock \ --user=http --group=http \ --http-log-path=/var/log/nginx/access.log \ --error-log-path=stderr \ --http-client-body-temp-path=/var/lib/nginx/client-body \ --http-proxy-temp-path=/var/lib/nginx/proxy \ --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \ --http-scgi-temp-path=/var/lib/nginx/scgi \ --http-uwsgi-temp-path=/var/lib/nginx/uwsgi \ --with-mail --with-mail_ssl_module --with-ipv6 \ --with-pcre-jit --with-file-aio --with-http_dav_module \ --with-http_gunzip_module --with-http_gzip_static_module \ --with-http_realip_module --with-http_v2_module \ --with-http_ssl_module --with-http_stub_status_module \ --with-http_addition_module --with-http_degradation_module \ --with-http_flv_module --with-http_mp4_module \ --with-http_secure_link_module --with-http_sub_module \ --with-threads --with-stream --add-module=/root/nginx-auth-ldap
- make and install :
make install
#configure nginx conf
- nginx.conf
http {
map $upstream_http_docker_distribution_api_version $docker_distribution_api_version {
'registry/2.0' '';
default registry/2.0;
}
ldap_server ldapserver {
url "ldaps://ldapmaster/dc=XXXX,dc=XXXX,dc=XXXX,dc=XXXX?uid?sub?(objectClass=person)";
}
...
}
server {
listen 5000 ssl;
server_name ***;
ssl on;
ssl_certificate /etc/letsencrypt/live/***/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/***/privkey.pem;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
client_max_body_size 0;
chunked_transfer_encoding on;
auth_ldap "Forbidden";
auth_ldap_servers ldapserver;
location / {
include servers/docker-client;
include servers/docker-registry;
}
}
- servers/docker-client
if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*\$" ) {
return 404;
}
- servers/docker-registry
add_header 'Docker-Distribution-Api-Version' $docker_distribution_api_version always; proxy_pass http://127.0.0.1:6000; proxy_set_header Host $http_host; # required for docker client's sake proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_read_timeout 900;
- docker-compose.yml
registry:
restart: always
image: registry:2
ports:
- 6000:5000
environment:
REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /var/lib/registry
volumes:
- /root/registry/data:/var/lib/registry