Binding nginx to a single interface

I have two nics on my server. I have nginx set to listen on one of them
using “listen 10.1.2.3 80” However, it keeps listening on the other ip
as
well. So i’m unable to start anything else on port 80 on that
interface.

Any ideas what could be wrong? Everything I’m finding says that the
listen
command is all I needed to do.

listen ip:port; or listen ip port;?

actually in that case it would be listening on default for the ip AND
for the port as an address (weird scenario).

version?

-a.

listen ip:port;

I realized after I sent the email that I’d typoed that. It’s the newest
version, 1.0.11

then grep your whole config and included files/config folders for any
listen statements, there must be something in there. i’m currently using
the same version with multiple interfaces and different servers on each
one and it’s working fine.

-a.

I’m using the default nginx.conf file with no changes. I’ve added my
own
config file in the conf.d directory.

Inside that I have two server {} blocks. They both have “listen
10.1.2.3:80”
and different server_names.

Yet when I telnet to 10.1.2.4 on port 80, I get a response from nginx.

Hello!

On Thu, Feb 09, 2012 at 12:42:47PM -0500, Bai Shen wrote:

I have two nics on my server. I have nginx set to listen on one of them
using “listen 10.1.2.3 80” However, it keeps listening on the other ip as
well. So i’m unable to start anything else on port 80 on that interface.

Any ideas what could be wrong? Everything I’m finding says that the listen
command is all I needed to do.

Make sure all server{} blocks in your config have the above listen
explicitly specified. If server{} block have no listen directives
at all, nginx will use “listen 80” by default, and this may be a
culprit.

Maxim D.

They do.

However, I do have some weird behaviour. I have the server_name set to
www.example.com and that correctly connects me to my web server. But if
I
type in 10.1.2.3, that connects me to my web server as well, even though
I
don’t have a default rule setup.

When I go to 10.1.2.4 I get a “Welcome to nginx!” page.

Found it. There was a default.conf file in there that had “listen 80”
Thanks.

But I’m not defining an ip server_name. Isn’t nginx listening for
server_names?

Right now I have example.com rewriting to www.example.com They both
listen
on 10.1.2.3. Previously, I could connect to 10.1.2.3 and it would
redirect
me to the web server. Now when I connect to 10.1.2.3 it rewrites the
url
to www.example.com and because I’m internal, that never resolves. How
do I
set nginx to do the redirect without the rewrite?

Hello!

On Thu, Feb 09, 2012 at 01:06:14PM -0500, Bai Shen wrote:

They do.

However, I do have some weird behaviour. I have the server_name set to
www.example.com and that correctly connects me to my web server. But if I
type in 10.1.2.3, that connects me to my web server as well, even though I
don’t have a default rule setup.

When I go to 10.1.2.4 I get a “Welcome to nginx!” page.

When selecting server{} based on server_name nginx will look only
through server{} blocks which have the listen socket defined.

That is, if you have

server {
    listen 80;
    server_name default;
}

server {
    listen 10.1.2.3:80;
    server_name example.com;
}

nginx will never consider “default” server if connection comes to
10.1.2.3:80. All requests to 10.1.2.3:80 will end up in
example.com” server as it’s the only server defined for the
listen socket in question.

More details may be found here:

http://nginx.org/en/docs/http/request_processing.html#mixed_name_ip_based_servers

and in docs.

Maxim D.

Hello!

On Mon, Feb 13, 2012 at 11:08:25AM -0500, Bai Shen wrote:

But I’m not defining an ip server_name. Isn’t nginx listening for
server_names?

Right now I have example.com rewriting to www.example.com They both listen
on 10.1.2.3. Previously, I could connect to 10.1.2.3 and it would redirect
me to the web server. Now when I connect to 10.1.2.3 it rewrites the url
to www.example.com and because I’m internal, that never resolves. How do I
set nginx to do the redirect without the rewrite?

Sorry, I wasn’t able to understand your question. Though overal
you probably need to set server_name_in_redirect to off, see here:

http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name_in_redirect

And you probably want to re-read the article here:

http://nginx.org/en/docs/http/request_processing.html

Maxim D.

www.example.com and that correctly connects me to my web server. But
That is, if you have

and in docs.

Maxim D.


nginx mailing list
[email protected]
nginx Info Page