
Nginx UI – Access and modify the Nginx configurations files without CLI - gilad
https://github.com/schenkd/nginx-ui
======
jackalx
I'm using this
[https://www.digitalocean.com/community/tools/nginx](https://www.digitalocean.com/community/tools/nginx)
that I find it pretty good

~~~
yasoob
Oh sweet! Didn’t know about this. Would have definitely helped when I was
getting my Django app working on DO and was using NGINX for the first time.

------
Thorentis
Looks basically like a web-based text-editor. More effort needs to be put into
adding UI controls for modifying common settings, or at least some macros for
adding settings to a config file. (e.g. insert a common setting at cursor
location). Better yet, hide editing the config file in an "advanced" mode, and
allow UI controls (checkboxes, input boxes, and dropdowns) for editing parts
of the config. (that's what I thought this was going to be).

~~~
enriquto
what's the goal of that? Which person needing to configure nginx does not know
how to edit text?

~~~
gjulianm
I imagine that if you are creating a web interface, with the associated risks
it carries (login, vulnerabilities, permissions), the interface should have
some advantages over just going into the terminal and editing the same files
in the same way.

In fact, by reading the motivation of the project in the README, it seems that
the problem it solved was the authentication part of it, and replaced it
with... no authentication?

------
mholt
This appears to be a simple UI wrapper over the nginx CLI more than a config
generator (like what DigitalOcean has). It's basically an assortment of text
boxes for editing the config and then buttons for applying it.

------
cateye
There are also more feature rich control panels:

[http://ajenti.org/](http://ajenti.org/)

[http://vestacp.com/](http://vestacp.com/)

For some use cases, these can feel bloated, so I understand there could be
room for a more minimalistic option.

------
pratio
This is certainly a good effort but I've yet to use a web ui to manage web
server configs, especially these days when we're moving most of the
configuration to code and version control. We usually deploy changes to a test
server to test the changes and then move on to production.

~~~
tmpz22
Adding a UI doesn’t require you to take config out of your IaaC setup, it
could Increase accessibility to logs, monitoring, security warnings,
versioning, etc, that your IaaC might be strongly lacking. There are
weaknesses to IaaC that a tool like this may supplement.

~~~
twblalock
That’s true if the UI is a read-only dashboard. If the UI can affect behavior
then you don’t have IaaC anymore.

~~~
Aeolun
Only if you have zero discipline.

~~~
viraptor
People make mistakes. Relying on people to have perfect discipline and make no
errors results in incidents in production.

------
arun6582
Nice way to shoot yourself in the foot if you manage configs without version
control

------
pratikss
10 years young me would have liked having something like this. Nowadays any
manual configuration is a big no-no. All my configuration parsing and building
happen in the CI pipeline in an automated manner.

~~~
stjohnswarts
It can give beginners a place to start. Until you have that critical base of
understanding it can seem very frustrating starting from scratch.

------
kissgyorgy
If you use this, you lose the ability to version control, which is the most
important feature of text files.

I'm not against generating configuration, but that should not require an
always-running instance.

~~~
inetknght
I think version controlling configuration is important.

I don't understand why you think a GUI necessitates losing version control
though, or why you think version control is a "feature" of text files.

If you need version control of always-running live-changing nginx
configuration then you can run `nginx -T` to dump the parsed configuration to
stdout. Just save that to version control.

------
crazyricardo
"Containerization is now state of the art and therefore the application is
delivered in a container."

I wouldn't say it is "state of the art". Solaris had containers in 2004/2005.

~~~
TJSomething
"State of the art" doesn't really indicate age. It just means that there's
nothing better. I'd be interested in learning about anything that's better
than containers.

~~~
crazyricardo
state of the art /ˌstād ə(v) T͟Hə ˈärt/

phrase of state

the most recent stage in the development of a product, incorporating the
newest ideas and the most up-to-date features.

incorporating the newest ideas and the most up-to-date features.

"a new state-of-the-art hospital"

~~~
SifJar
newest =/= new

something can be quite old, but if nothing has replaced it, it's still
"newest" and "most up-to-date"

------
tokenk
NginxProxyManager is the preferred choice in the Unraid (home server)
community - good to have another contender to help nginx n00bs like myself.

------
caymanjim
Is there any security model for this? Or does having access effectively give
you complete root control?

~~~
Aeolun
Presumably you can set the file root to anything you want.

Maybe do script injection by doing some fancy file loading? Not sure how much
nginx config language allows.

------
battery423
Weird. Not sure why i would like to update/change a live config.

That would probably not mean that there is an Infrastructure code in git.

~~~
popotamonga
Well i have 1M+ users and still ssh into the VMs and live-change nginx
configs. Once in a while the reload fails because i messed up something.

~~~
mad182
I have over 100k uniques daily, 7 servers and I also change nginx config
manually via ssh.

~~~
battery423
But why?

Even if you don't use kubernetes or docker images, you do wanna have it in
code right?

Having something like ansible would do the same thing but allows you to have
your config backuped by git and allows you to recreate the env without any
issues.

How do you keep your mean time to recovery low? How do you document your
setup? How do you automated tests if you change your config manual?

~~~
mad182
Why not?

I have done this for 10+ years and it's still working flawlessly, I don't see
a reason to add more complexity to something that is working fine for my
needs. I don't have to change config often, maybe once a year or so.

~~~
battery423
" I don't see a reason to add more complexity to something that is working
fine for my needs" valid point though.

I would do it due to: \- keeping 'meantime to recovery' low due to having my
configs in git -> fast recovery \- using something like ansible for your small
case to have it in git (instead of a shellscript) -> backup \- perhaps a
jenkins pipeline with testing the config before applying it automatically ->
for quality \- automatisation for having fun with it, seeing what is out there
besides ssh and manuel editing

At the end of the day, i assume that this automatisated process is also less
dependend from myself. So i'm not sure who is doing things when you are on
holiday or sick.

I'm now having a small k8s cluster at home. I have never had anything which
allows me to have my whole setup in git so easy with autohealing, domain
management and high availability.

------
xmdx
Their user case seems a bit weird to me. If a new application is deployed, can
you not make changes to the nginx config locally and redeploy it? That way
everyone has access and it'll be part of the usual merge request -> review ->
merge flow.

If anything this tool makes editing easier and may lead to more
misconfiguration.

------
gshulegaard
Neat! Felt a little nostalgic seeing reading the title as it was a somewhat
big emphasis as the "next thing to do" when I was part of the NGINX Amplify
team.

In case you didn't know, the configuration parsing library we created for the
NGINX Amplify agent is open source under Apache 2.0:

[https://github.com/nginxinc/crossplane](https://github.com/nginxinc/crossplane)
(credit to @aluttik who was the primary author)

It parses an NGINX configuration files into JSON and vice-versa.

------
neya
IMHO, I might as well just use Vim. Maybe this has a use case, it's not for
me. I literally need to type just one line and and press enter:

    
    
        sudo vi /etc/nginx/...

~~~
Cthulhu_
Generally speaking, a UI DOES have a use case - when you can't be bothered to
learn the configuration language and its keys / values / nuances. The UI can
help you create a sane and safe config, instead of having to scour the
internet for - potentially outdated - information.

Mind you, I've had more trouble with that with Apache given how they changed
their config files around on multiple occasions.

~~~
allzeros
I'd argue that if you are neither willing nor able to learn nginx's config
file format, you should not be configuring nginx. The default config has
example blocks with comments anyway. If that's not enough, nginx maintains
current documentation. But if you're configuring a web server (or anything,
for that matter), you should take some time to learn how to configure it.

~~~
jascii
This. I never understood the "every idiot can do it gui server" thing, just
because everybody can doesn't mean everybody _should_.

Have we already forgotten how Microsoft Exchange singlehandedly launched an
entire spam industry?

------
simplyinfinity
From what i gather, this is a Deployment & editor software for nginx
specifically. At work I've setup a pipeline using Azure Devops (also done it
with Gitlab) that achieves the same thing. And I'm guessing it can be done
with the other popular build & deploy tools such as Jenkins and . So i wonder,
who is this for?

------
furstenheim
I'd rather track it in the repo and let the pipeline deploy it. No need to
modify it by hand.

------
boraalparat
I just loved it, docker is a good choice but I would've love to have non-
docker version as well.

~~~
llarsson
Well, the Dockerfile says exactly how to start the software and how to install
all the packages etc. locally, so why not use that? :)

------
amachefe
What is wrong with the current config via CLI?

Edit file, reload... Voilà

------
jordache
how many cooks does one need in the kitchen, to continuously re-configure a
single nginx server? His described use case seems like a strange setup.

~~~
vasco
And you'd think there'd be some automated pipeline that would deploy and
reload nginx configs. That would be usable by all environments, from lab to
prod, and would go through code review. A UI anyone can just go in and switch
stuff for prod seems like a weird solution to the use case.

Nonetheless they had a problem, they fixed it and they shared the solution
when they could've just kept it.

