<div dir="ltr">I would say for Nginx to truly fall under the &quot;do one thing and do it well&quot; It would have to lose its proxy support and caching support. This means instead of having Ngnix talk to php-fpm/<span style="color:rgb(33,33,33)">gunicorn/uwsgi/passenger/etc and it happen to cache things either to disk or RAM to speed things up you would need to have something more like, HAProxy that talks to your </span>php-fpm/<font color="#212121">gunicorn/uwsgi/passenger/etc and maybe Nginx for any static assets and if you wanted caching you would need to throw in something like Varnish/Memcache. That way each moving wheel is truly only responsible for doing one thing.  That is a very contrived example I&#39;ll admit and may actually be dumb to try and deploy which is why Nginx does all the things that it out of the box.</font><div><div><font color="#212121"><br></font></div><div><font color="#212121">This is just my view on it and was just meant as an example, not to say that any of this is right or not as at the end of the day we are talking about a philosophy. </font><span style="color:rgb(33,33,33)">I&#39;m not against Nginx or Apache for that matter, both tools get the job done although I do prefer Nginx over Apache as I find it nicer to work with.</span></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Sep 8, 2017 at 11:37 AM Kyle Brieden &lt;<a href="mailto:kyle@txmoose.com">kyle@txmoose.com</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I would argue that Nginx is MUCH closer to the &quot;Do one thing&quot; philosophy<br>
than apache is.  Nginx essentially only serves up static content and<br>
caches some of that static content in memory to serve it faster.  I<br>
think that falls well within the &quot;do one thing&quot; of serving static<br>
content.  Nginx doesn&#39;t do any server side processing at all;  you need<br>
php-fpm for php, gunicorn/uwsgi for python, etc...  Nginx passes the<br>
request back to those, those do the processing and hand rendered pages<br>
to nginx, and as far as nginx is concerned, that&#39;s a static asset that<br>
it fires out the front.  All HTML/CSS/JS assets that it serves are<br>
static content, rendered in browser.  One could argue that nginx isn&#39;t a<br>
&quot;webserver&quot; at all, although that&#39;s what it made it&#39;s name on.  It<br>
basically only does proxy to other things that do processing and then<br>
serves up static objects.<br>
<br>
On that same token, the fact that it can loadbalance and have many<br>
backends to proxy to falls well within the purview of &quot;being good at<br>
proxying&quot;.<br>
<br>
Just my 2 cents.<br>
<br>
---<br>
Very respectfully,<br>
Kyle Brieden<br>
<br>
On 08-09-2017 10:01, Adam Jimerson wrote:<br>
&gt;&gt; Thanks for the reminder for why I don&#39;t use either Emacs or Apache.<br>
&gt;<br>
&gt; Sorry but that is a pretty week statement unless you use something<br>
&gt; that can only edit text/hex/whatever your working with files and/or<br>
&gt; only using a web server only capable of service static files (html,<br>
&gt; css, js, misc files, etc)/a dedicated proxy server/a dedicated caching<br>
&gt; server.<br>
&gt;<br>
&gt; Nginx even violates the &quot;Do one thing and do it well&quot; as it is a web<br>
&gt; server that works well as forward/reverse proxy and it has really good<br>
&gt; caching support.  Same for some of the smaller more obscure web<br>
&gt; servers like lighttpd and Caddy to name a few.<br>
&gt;<br>
&gt; On Fri, Sep 8, 2017 at 9:25 AM DJ-Pfulio &lt;<a href="mailto:DJPfulio@jdpfu.com" target="_blank">DJPfulio@jdpfu.com</a>&gt; wrote:<br>
&gt;<br>
&gt;&gt; Thanks for the reminder for why I don&#39;t use either Emacs or Apache.<br>
&gt;&gt;<br>
&gt;&gt; On 09/08/2017 07:58 AM, Jim Kinney wrote:<br>
&gt;&gt;&gt; UNIX is dead. Linux isn&#39;t UNIX. It&#39;s only UNIX-like.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Emacs violates those rules. An editor that can read your email out<br>
&gt;&gt; loud<br>
&gt;&gt;&gt; is rather crossing domains.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Apache violates those rules. The proxy capabilities are beyond<br>
&gt;&gt; it&#39;s<br>
&gt;&gt;&gt; initial web server domain.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; But at least systemd provides a topic other than vi vs emacs to<br>
&gt;&gt; squabble<br>
&gt;&gt;&gt; over. That was getting old.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Besides, systemd follows most of the rules that were listed about<br>
&gt;&gt; as<br>
&gt;&gt;&gt; well as any other PID 1 process responsible for a current system<br>
&gt;&gt; startup.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; On September 8, 2017 7:28:45 AM EDT, Jerald Sheets<br>
&gt;&gt; &lt;<a href="mailto:questy@gmail.com" target="_blank">questy@gmail.com</a>&gt; wrote:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I avoid all the BS and just hate it for its design, layout,<br>
&gt;&gt; and<br>
&gt;&gt;&gt; intrusion into all sorts of things it shouldn’t be fiddling<br>
&gt;&gt; around<br>
&gt;&gt;&gt; in, breaking a myriad of tenets of the “UNIX way”.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The “UNIX Way” is to have a tool that does one thing, does<br>
&gt;&gt; it very<br>
&gt;&gt;&gt; well, has clearly defined input and output and doesn’t try<br>
&gt;&gt; to handle<br>
&gt;&gt;&gt; multiple responsibility domains.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; &quot;This is the Unix philosophy: Write programs that do one thing<br>
&gt;&gt; and<br>
&gt;&gt;&gt; do it well. Write programs to work together. Write programs to<br>
&gt;&gt;&gt; handle text streams, because that is a universal interface.”<br>
&gt;&gt; — Doug<br>
&gt;&gt;&gt; McIlroy, the inventor of UNIX pipes<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; This is why grep doesn’t awk and vice-versa.  In case<br>
&gt;&gt; we’ve forgotten:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The Rule of Modularity:<br>
&gt;&gt;&gt; Write simple parts connected by clean interfaces.<br>
&gt;&gt;&gt; Rule of Clarity:<br>
&gt;&gt;&gt; Clarity is better than cleverness.<br>
&gt;&gt;&gt; Rule of Composition:<br>
&gt;&gt;&gt; Design programs to be connected with other programs.<br>
&gt;&gt;&gt; Rule of Separation:<br>
&gt;&gt;&gt; Separate policy from mechanism; separate interfaces from<br>
&gt;&gt; engines.<br>
&gt;&gt;&gt; Rule of Simplicity:<br>
&gt;&gt;&gt; Design for simplicity; add complexity only where you must.<br>
&gt;&gt;&gt; Rule of Parsimony:<br>
&gt;&gt;&gt; Write a big program only when it is clear by demonstration<br>
&gt;&gt; that<br>
&gt;&gt;&gt; nothing else will do.<br>
&gt;&gt;&gt; Rule of Transparency:<br>
&gt;&gt;&gt; Design for visibility to make inspection and debugging easier.<br>
&gt;&gt;&gt; Rule of Robustness:<br>
&gt;&gt;&gt; Robustness is the child of transparency and simplicity.<br>
&gt;&gt;&gt; Rule of Representation:<br>
&gt;&gt;&gt; Fold knowledge into data, so program logic can be stupid and<br>
&gt;&gt; robust.<br>
&gt;&gt;&gt; Rule of Least Surprise:<br>
&gt;&gt;&gt; In interface design, always do the least surprising thing.<br>
&gt;&gt;&gt; Rule of Silence:<br>
&gt;&gt;&gt; When a program has nothing surprising to say, it should say<br>
&gt;&gt; nothing.<br>
&gt;&gt;&gt; Rule of Repair:<br>
&gt;&gt;&gt; Repair what you can — but when you must fail, fail noisily<br>
&gt;&gt; and as<br>
&gt;&gt;&gt; soon as possible.<br>
&gt;&gt;&gt; Rule of Economy:<br>
&gt;&gt;&gt; Programmer time is expensive; conserve it in preference to<br>
&gt;&gt; machine time.<br>
&gt;&gt;&gt; Rule of Generation:<br>
&gt;&gt;&gt; Avoid hand-hacking; write programs to write programs when you<br>
&gt;&gt; can.<br>
&gt;&gt;&gt; Rule of Optimization:<br>
&gt;&gt;&gt; Prototype before polishing, Get it working before you optimize<br>
&gt;&gt; it.<br>
&gt;&gt;&gt; Rule of Diversity:<br>
&gt;&gt;&gt; Distrust all claims for one true way.<br>
&gt;&gt;&gt; Rule of Extensibility:<br>
&gt;&gt;&gt; Design for the future, because it will be here sooner than you<br>
&gt;&gt; think.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I’ll stick with what has worked extremely well for almost 50<br>
&gt;&gt; years.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; —jms<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Sep 8, 2017, at 3:10 AM, Steve Litt<br>
&gt;&gt; &lt;<a href="mailto:slitt@troubleshooters.com" target="_blank">slitt@troubleshooters.com</a><br>
&gt;&gt;&gt;&gt; &lt;mailto:<a href="mailto:slitt@troubleshooters.com" target="_blank">slitt@troubleshooters.com</a>&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; On Thu, 7 Sep 2017 12:29:46 +0000<br>
&gt;&gt;&gt;&gt; &quot;Lightner, Jeffrey&quot; &lt;<a href="mailto:JLightner@dsservices.com" target="_blank">JLightner@dsservices.com</a><br>
&gt;&gt;&gt;&gt; &lt;mailto:<a href="mailto:JLightner@dsservices.com" target="_blank">JLightner@dsservices.com</a>&gt;&gt; wrote:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Caveman conversation:<br>
&gt;&gt;&gt;&gt;&gt; Ug:  What that?<br>
&gt;&gt;&gt;&gt;&gt; Zog:  Wheel.<br>
&gt;&gt;&gt;&gt;&gt; Ug:  Why wheel?  Drag work for years.<br>
&gt;&gt;&gt;&gt;&gt; Zog: More fast to use wheel.<br>
&gt;&gt;&gt;&gt;&gt; Ug: Wheel made by false god to trap draggers.  It bad.<br>
&gt;&gt;&gt;&gt;&gt; Ug then clubs Zog because Zog doesn&#39;t see the intrinsic<br>
&gt;&gt; &quot;reason&quot; of<br>
&gt;&gt;&gt;&gt;&gt; Ug&#39;s opinion.<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;&gt; Move ahead 10,000 years:<br>
&gt;&gt;&gt;&gt;&gt; Ug:  What that?<br>
&gt;&gt;&gt;&gt;&gt; Zog:  Systemd.<br>
&gt;&gt;&gt;&gt;&gt; Ug: Why systemd.  Init work for years...<br>
&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Ale mailing list<br>
&gt;&gt; <a href="mailto:Ale@ale.org" target="_blank">Ale@ale.org</a><br>
&gt;&gt; <a href="http://mail.ale.org/mailman/listinfo/ale" rel="noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo/ale</a><br>
&gt;&gt; See JOBS, ANNOUNCE and SCHOOLS lists at<br>
&gt;&gt; <a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
&gt; _______________________________________________<br>
&gt; Ale mailing list<br>
&gt; <a href="mailto:Ale@ale.org" target="_blank">Ale@ale.org</a><br>
&gt; <a href="http://mail.ale.org/mailman/listinfo/ale" rel="noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo/ale</a><br>
&gt; See JOBS, ANNOUNCE and SCHOOLS lists at<br>
&gt; <a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a>_______________________________________________<br>
Ale mailing list<br>
<a href="mailto:Ale@ale.org" target="_blank">Ale@ale.org</a><br>
<a href="http://mail.ale.org/mailman/listinfo/ale" rel="noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo/ale</a><br>
See JOBS, ANNOUNCE and SCHOOLS lists at<br>
<a href="http://mail.ale.org/mailman/listinfo" rel="noreferrer" target="_blank">http://mail.ale.org/mailman/listinfo</a><br>
</blockquote></div>