-
-
Notifications
You must be signed in to change notification settings - Fork 322
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #89 from Joxit/custom-headers
Supports custom headers when the ui is used as proxy ## Background Headers can be useful in some cases such as avoid sending credentials when you are on the UI (like #87). Or give to the registry server other properties such as `X-Forward-For` or `Server` headers for monitoring. ## How to use ? This is compatible only with static version of the UI and used with `REGISTRY_URL` variable. When you want to add a custom header, add to the registry ui a environment variable or entry in `/etc/nginx/.env` which looks like `NGINX_PROXY_HEADER_Custom_Header`. All underscores (`_`) will be replaced by hyphens (`-`). Some example of custom headers as variable: - `NGINX_PROXY_HEADER_Authorization` for Basic auth credentials - `NGINX_PROXY_HEADER_X_Forwarded_For` for identifying the originating IP address of a client An example is bundled with this PR closes: #87
- Loading branch information
Showing
8 changed files
with
97 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# Set custom headers to the registry example | ||
|
||
The interface and the docker registry will be accessible with <http://localhost>. | ||
|
||
This example highlight the usage of custom headers when the UI is used as a proxy. When you wants to use a header name with hyphens, replace them by underscores in the variable. You can put headers in environment variable or in config file `/etc/nginx/.env`. They have the same writing style. | ||
|
||
Headers can be useful in some cases such as avoid sending credentials when you are on the UI. Or give to the registry server other properties such as X-Forward-For header. | ||
|
||
I will set these two headers in this example. X-Forward-For by environment variable and Authorization by file. | ||
|
||
In order to set your credentials in the header, you need to know how [Authorization](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization) header works. Here we use the `Basic` authentication scheme, the credentials are constructed like this: | ||
- The username and the password are combined with a colon (`registry:ui`). | ||
- The resulting string is base64 encoded (`cmVnaXN0cnk6dWk=`). You can simply run `echo -n "registry:ui" | base64`. | ||
- In your header, put this value `Basic cmVnaXN0cnk6dWk=` | ||
- In your `/etc/nginx/.env`, the file will contains `NGINX_PROXY_HEADER_Authorization=Basic cmVnaXN0cnk6dWk=` | ||
|
||
For X-Forward-For, replace all hyphens by underscores, and the value will be a nginx variable which is `$proxy_add_x_forwarded_for`. In your docker compose you will need to duplicate the `$` character. In your docker-compose, your environment will look like `NGINX_PROXY_HEADER_X_Forwarded_For=$$proxy_add_x_forwarded_for` | ||
|
||
As usual, run the project with `docker-compose up -d` (for background mode) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
version: '2.0' | ||
services: | ||
registry: | ||
image: registry:2.7 | ||
volumes: | ||
- ./registry-data:/var/lib/registry | ||
- ./registry-config/credentials.yml:/etc/docker/registry/config.yml | ||
- ./registry-config/htpasswd:/etc/docker/registry/htpasswd | ||
networks: | ||
- registry-ui-net | ||
|
||
ui: | ||
image: joxit/docker-registry-ui:static | ||
ports: | ||
- 80:80 | ||
environment: | ||
- REGISTRY_TITLE=My Private Docker Registry | ||
- REGISTRY_URL=http://registry:5000 | ||
- NGINX_PROXY_HEADER_X_Forwarded_For=$$proxy_add_x_forwarded_for | ||
volumes: | ||
- ./nginx.env:/etc/nginx/.env | ||
depends_on: | ||
- registry | ||
networks: | ||
- registry-ui-net | ||
|
||
networks: | ||
registry-ui-net: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
NGINX_PROXY_HEADER_Authorization=Basic cmVnaXN0cnk6dWk= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
version: 0.1 | ||
log: | ||
fields: | ||
service: registry | ||
storage: | ||
delete: | ||
enabled: true | ||
cache: | ||
blobdescriptor: inmemory | ||
filesystem: | ||
rootdirectory: /var/lib/registry | ||
http: | ||
addr: :5000 | ||
headers: | ||
X-Content-Type-Options: [nosniff] | ||
Access-Control-Allow-Origin: ['http://localhost'] | ||
Access-Control-Allow-Methods: ['HEAD', 'GET', 'OPTIONS', 'DELETE'] | ||
Access-Control-Allow-Headers: ['Authorization'] | ||
Access-Control-Max-Age: [1728000] | ||
Access-Control-Allow-Credentials: [true] | ||
Access-Control-Expose-Headers: ['Docker-Content-Digest'] | ||
auth: | ||
htpasswd: | ||
realm: basic-realm | ||
path: /etc/docker/registry/htpasswd |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
registry:$2y$11$1bmuJLK8HrQl5ACS/WeqRuJLUArUZfUcP2R23asmozEpfN76.pCHy |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters