Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't restart nginx

Tags:

nginx

django

I'm using nginx with Django on Ubunto 10:04. The problem is when I restart nginx I get this error.

sudo /etc/init.d/nginx restart
Restarting nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
configuration file /etc/nginx/nginx.conf test is successful
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)

Also, I have tried stop and then start but still get the error.

Here's the output from lsof:

sudo lsof -i tcp:80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   27141   root    6u  IPv4 245906      0t0  TCP *:www (LISTEN)
nginx   27142 nobody    6u  IPv4 245906      0t0  TCP *:www (LISTEN)

If I kill the process with PID 27141 it works. However, I would like to get to the bottom of why I can't just do a restart.

Here's the nginx.conf:

worker_processes 1;

user nobody nogroup;
pid /tmp/nginx.pid;
error_log /tmp/nginx.error.log;

events {
    worker_connections 1024;
    accept_mutex off;
}

http {
    include mime.types;
    default_type application/octet-stream;
    access_log /tmp/nginx.access.log combined;
    sendfile on;

    upstream app_server {
        # server unix:/tmp/gunicorn.sock fail_timeout=0;
        # For a TCP configuration:
        server 127.0.0.1:8000 fail_timeout=0;
    }

    server {
        listen 80 default;
        client_max_body_size 4G;
        server_name _;

        keepalive_timeout 5;

        # path for static files
        root /home/apps/venvs/app1/app1;

        location / {
            # checks for static file, if not found proxy to app
            try_files $uri @proxy_to_app;
        }

        location @proxy_to_app {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_redirect off;

            proxy_pass   http://app_server;
        }

        error_page 500 502 503 504 /500.html;
        location = /500.html {
            root /path/to/app/current/public;
        }
    }
}

Any ideas?

like image 284
ErnieP Avatar asked May 21 '11 16:05

ErnieP


1 Answers

Try:

$ sudo fuser -k 80/tcp ; sudo /etc/init.d/nginx restart 
like image 94
tersakyan Avatar answered Oct 12 '22 11:10

tersakyan