<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://code.secondbit.org/nginx/</link>
    <language>en-us</language>

    <title>nginx Changelog</title>
    <description>nginx Changelog</description>
    <item>
    <title>[default] Make nginx kubernetes-ready.</title>
    <guid isPermaLink="true">http://code.secondbit.org/nginx/rev/ac9c19126939</guid>
             <link>http://code.secondbit.org/nginx/rev/ac9c19126939</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>ac9c19126939</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td>default</td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td>tip</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>Make nginx kubernetes-ready.<br/>
<br/>
We had to update to use a ubuntu-based image to build nginx into, because (and I<br/>
kid you not) alpine linux straight-up ignores your resolv.conf file, meaning any<br/>
attempt to use it with kubernetes DNS is doomed to fail. Who thought this was a<br/>
good idea?<br/>
<br/>
So we're using a bloated image instead. Oh well.<br/>
<br/>
We also are running a wrapper script instead of nginx directly, so we can inject<br/>
the JWT_SECRET environment variable based on a kubernetes secret file.<br/>
<br/>
We define the secret file (using a placeholder secret, obvs) so that<br/>
future-Paddy can remember what the hell it looks like, when he inevitably loses<br/>
the file and needs to sin up a new cluster. Or whatever.<br/>
<br/>
Finally, we updated the token expiration error message to be in an errors array,<br/>
as God (and our API conventions) intended.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>Dockerfile<br />nginx-jwt.lua<br />secrets/jwt.json<br />wrapper.sh<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Tue, 30 Jun 2015 00:27:03 -0400</pubDate>
</item>
<item>
    <title>First basic pass at JWT auth.</title>
    <guid isPermaLink="true">http://code.secondbit.org/nginx/rev/68478c1bddde</guid>
             <link>http://code.secondbit.org/nginx/rev/68478c1bddde</link>
    <description>
              <![CDATA[
	<table>
	<tr>
		<th style="text-align:left;">changeset</th>
		<td>68478c1bddde</td>
              </tr>
              <tr>
                              <th style="text-align:left;">branch</th>
                              <td></td>
              </tr>
              <tr>
                              <th style="text-align:left;">bookmark</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;">tag</th>
		<td></td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">user</th>
		<td>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">description</th>
		<td>First basic pass at JWT auth.<br/>
<br/>
Mostly just a fork of https://github.com/ficusio/openresty, with a few twists:<br/>
<br/>
* We've narrowed down some of the configuration options, and we're passing more<br/>
headers (essentially exposing all the data in the JWT as headers).<br/>
* We no longer automatically return a 401 unauthorized if the JWT verification<br/>
fails; we just don't assign it the headers. The consuming service can decide<br/>
whether or not they want to accept the request.<br/>
* We automatically fail the verification of a JWT if the token has expired in<br/>
the last minute (or shouldn't be used for the next minute). If the token has<br/>
expired, we return a 401 that our clients can catch and use a refresh token<br/>
automatically from. If the token can't be used for another minute, we quietly<br/>
just refuse to add auth headers to the request.</td>
	</tr>
	<tr>
		<th style="text-align:left;vertical-align:top;">files</th>
		<td>Dockerfile<br />README.md<br />jwt-lib/basexx.lua<br />jwt-lib/resty/hmac.lua<br />jwt-lib/resty/jwt.lua<br />nginx-jwt.lua<br /></td>
	</tr>
	</table>
	]]></description>
    <author>&#80;&#97;&#100;&#100;&#121;&#32;&#60;&#112;&#97;&#100;&#100;&#121;&#64;&#115;&#101;&#99;&#111;&#110;&#100;&#98;&#105;&#116;&#46;&#111;&#114;&#103;&#62;</author>
    <pubDate>Mon, 22 Jun 2015 00:42:40 -0400</pubDate>
</item>

  </channel>
</rss>