1
- # nginx ui
1
+ # nginx ui
2
2
3
- ![ Docker Image CI] ( https://github.com/schenkd/nginx-ui/workflows/Docker%20Image%20CI/badge.svg )
3
+ ![ Docker Image CI] ( https://github.com/schenkd/nginx-ui/workflows/Docker%20Image%20CI/badge.svg )
4
4
5
5
![ Image of Nginx UI] ( https://i.ibb.co/XXcfsDp/Bildschirmfoto-2020-06-20-um-18-40-27.png )
6
6
7
- ![ Image of Nginx UI] ( https://i.ibb.co/XXcfsDp/Bildschirmfoto-2020-06-20-um-18-40-27.png )
7
+ Table of Contents
8
+
9
+ - [ nginx ui] ( #nginx-ui )
10
+ - [ Introduction] ( #introduction )
11
+ - [ Setup] ( #setup )
12
+ - [ Example] ( #example )
13
+ - [ Docker] ( #docker )
14
+ - [ UI] ( #ui )
15
+ - [ Authentication] ( #authentication )
16
+ - [ Configure the auth file] ( #configure-the-auth-file )
17
+ - [ Configure nginx] ( #configure-nginx )
18
+
19
+ ## Introduction
8
20
9
21
We use nginx in our company lab environment. It often happens that my
10
22
colleagues have developed an application that is now deployed in our Stage
@@ -15,16 +27,31 @@ doing this for everyone anymore I thought a UI could help us all. If you
15
27
feel the same way I wish you a lot of fun with the application and I am
16
28
looking forward to your feedback, change requests or even a star.
17
29
18
- ## setup
30
+ ## Setup
19
31
20
32
Containerization is now state of the art and therefore the application is
21
33
delivered in a container.
22
34
23
- ### docker
35
+ ### Example
36
+
37
+ - ` -d ` run as deamon in background
38
+ - ` --restart=always ` restart on crash or server reboot
39
+ - ` --name nginxui ` give the container a name
40
+ - ` -v /etc/nginx:/etc/nginx ` map the hosts nginx directory into the container
41
+ - ` -p 8080:8080 ` map host port 8080 to docker container port 8080
42
+
43
+ ``` bash
44
+ docker run -d --restart=always --name nginxui -v /etc/nginx:/etc/nginx -p 8080:8080 schenkd/nginx-ui:latest
45
+ ```
46
+
47
+ ### Docker
24
48
25
49
Repository @ [ DockerHub] ( https://hub.docker.com/r/schenkd/nginx-ui )
26
50
51
+ Docker Compose excerpt
52
+
27
53
``` yaml
54
+ # Docker Compose excerpt
28
55
services :
29
56
nginx-ui :
30
57
image : schenkd/nginx-ui:latest
@@ -47,3 +74,43 @@ into the Nginx UI Main Config menu item.
47
74
48
75
Adding a domain opens an exclusive editing window for the configuration
49
76
file. This can be applied, deleted and enabled/disabled.
77
+
78
+ ## Authentication
79
+
80
+ [BasicAuth with nginx](https://docs.nginx.com/nginx/admin-guide/security-controls/configuring-http-basic-authentication/)
81
+
82
+ In general, this app does not come with authentication. However, it is easy to setup basic auth to restrict unwanted access.
83
+ Here is how this can be done when using nginx.
84
+
85
+ ### Configure the auth file
86
+
87
+ 1. Verify that ` apache2-utils` (Debian, Ubuntu) or `httpd-tools` (RHEL/CentOS/Oracle Linux) is installed
88
+ 2. Run the htpasswd utility to create a new user and set a passwort.
89
+ - Make sure, that the directory exists
90
+ - Remove the `-c` flag, if you have created a user before, since it creates the inital user/passwort file
91
+ - ` sudo htpasswd -c /etc/apache2/.htpasswd user1`
92
+
93
+ # ## Configure nginx
94
+
95
+ The following example adds basic auth to our nginxui app running in a docker container with a mapped port 8080.
96
+ In this case, it will be accessible via nginx.mydomain.com
97
+
98
+ ` ` ` none
99
+ server {
100
+ server_name nginx.mydomain.com;
101
+
102
+ location / {
103
+ proxy_pass http://127.0.0.1:8080/;
104
+ }
105
+
106
+ auth_basic "nginxui secured";
107
+ auth_basic_user_file /etc/apache2/.htpasswd;
108
+
109
+ # [...] ommited ssl configuration
110
+ }
111
+ ` ` `
112
+
113
+ 1. Add above nginx conf to your `/etc/nginx/my.conf` file
114
+ 2. Run `nginx -t` to make sure, that your config is valid
115
+ 3. Run `systemctl restart nginx` (or equivalent) to restart your nginx and apply the new settings
116
+ 4. Your nginx ui is now accessible at nginx.mydomain.com and will correctly prompt for basic auth
0 commit comments