Intellipaat Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in AWS by (19.1k points)

I am running Ubuntu Hardy 8.04 and nginx 0.7.65, and when I try starting my nginx server:

$ sudo /etc/init.d/nginx start

I get the following error:

Starting nginx: [emerg]: bind() to IP failed (99: Cannot assign requested address)

where "IP" is a placeholder for my IP address. Does anybody know why that error might be happening? This is running on EC2.

My nginx.conf file looks like this:

user www-data www-data;

worker_processes  4;

events {

    worker_connections  1024;

}

http {

    include       mime.types;

    default_type  application/octet-stream;

    access_log /usr/local/nginx/logs/access.log;

    sendfile        on;

    tcp_nopush      on;

    tcp_nodelay         on;

    keepalive_timeout  3;

    gzip  on;

    gzip_comp_level 2;

    gzip_proxied any;

    gzip_types  text/plain text/css application/x-javascript text/xml application/xml

    application/xml+rss text/javascript;

    include /usr/local/nginx/sites-enabled/*;

}

and my /usr/local/nginx/sites-enabled/example.com looks like:

server {

        listen   IP:80;

        server_name  example.com;

        rewrite ^/(.*) https://example.com/$1 permanent;

       }

server {

        listen   IP:443 default ssl;

        ssl         on;

        ssl_certificate     /etc/ssl/certs/myssl.crt;

        ssl_certificate_key /etc/ssl/private/myssl.key;

        ssl_protocols       SSLv3 TLSv1;

        ssl_ciphers ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:-LOW:-SSLv2:-EXP;

        server_name example.com;

        access_log /home/example/example.com/log/access.log;

        error_log /home/example/example.com/log/error.log;

        }

1 Answer

0 votes
by (44.4k points)

With Amazon EC2 and elastic IPs, the server does not truly know its IP as with most other servers.

So you wish to tell your Linux to permit processes to bind to the non-local address. Just add the following line into /etc/sysctl.conf file:

# enable processes to bind to the non-local address

# (necessary for apache/nginx in Amazon EC2)

net.ipv4.ip_nonlocal_bind = 1

and then reload your sysctl.conf by:

$ sysctl -p /etc/sysctl.conf

which will be fine on reboots.

Related questions

0 votes
1 answer
asked Jul 11, 2019 in AWS by yuvraj (19.1k points)
Want to get 50% Hike on your Salary?

Learn how we helped 50,000+ professionals like you !

0 votes
1 answer

31k questions

32.8k answers

501 comments

693 users

Browse Categories

...