• Tim Rice's avatar
    Add pool tokens so a backend can tell the fleet from anybody else · a8a0017c
    Tim Rice authored
    An app server sits on a port and anything that can reach that port looks exactly
    like nginx does to it.  A pool token closes that.  nginx puts a shared secret on
    every request it proxies to the pool, the backend checks it, and a scanner that
    finds port 8080 gets a 403 instead of your application.
    
    The header is set rather than added, so a client sending that header itself has
    it replaced on the way through and cannot forge its way in.  It is hidden on the
    way back in case the backend echoes it.
    
    The health checker sends the token too.  Without that, the moment a backend
    started enforcing it every check would come back 403, and the manager would mark
    a perfectly healthy pool down and pull it out of service.
    
    Rotation is deliberately two steps.  nginx can only send one value and you
    cannot change both ends at once, so a single swap would 403 every request in the
    gap.  Rotate stages a new token while nginx keeps sending the old one, you teach
    ...
    a8a0017c
This project is licensed under the MIT License. Learn more