Nginx servers on both *:80 and <ip>:80? also duplicate listen parameters error when binding by just specific ips

Francis Daly francis at daoine.org
Thu Mar 31 20:29:28 UTC 2016


On Thu, Mar 31, 2016 at 01:21:02PM -0400, CJ Ess wrote:

Hi there,

> I would like to have an Nginx setup where I have specific logic depending
> on which interface (ip) the request arrived on.

multiple server{} with different "listen"; possibly with an "include
common-config" entry.

Note: "listen" is on an ip, not an interface.

> I was able to make this work by having a server stanza for each ip on the
> server, but was't able to do a combination of a specific ip and a wildcard
> ip (as a catchall) - is there a way to do that with some option combination
> (i.e. nginx listens on *:80, but matches the server stanza by ip?)

I don't understand what you are describing. Could you try again, perhaps
with a config example?

When I use

===
    server {
        listen 127.0.0.1:8088;
        return 200 "listen 127.0.0.1:8088\n";
    }
    server {
        listen 10.0.1.2:8088;
        return 200 "listen 10.0.1.2:8088\n";
    }
    server {
        listen 8088;
        return 200 "listen 8088\n";
    }
===

I get the following output, which is what I expect:

$ curl http://127.0.0.1:8088/
listen 127.0.0.1:8088
$ curl http://127.0.0.2:8088/
listen 8088

> The scenario I'm playing towards is that I have a dedicated connection to a
> CDN and I want to pass thru certain headers if they arrive via the
> dedicated interface, strip them if they arrive on other interface.

As above, if "interface" is replaced with "ip", this can work with two
server{} blocks.

> When I did the server{} per IP approach nginx complained about duplicate
> listen settings for the second IP even though both server stanzas were
> bound to a specific port/interface. Is this a bug per chance?

What short server{} config can I use to reproduce the complaint?

	f
-- 
Francis Daly        francis at daoine.org



More information about the nginx mailing list