Scenario / Questions

I’ve installed and configured nginx server on my Mac from MacPorts

  1. sudo port install nginx
  2. Followed the recommendation from the port installation console and created the launchd startup item for nginx, then started the server.
  3. Renamed nginx.conf.example to nginx.conf and renamed mime.types.example to mime.types.

It works fine, but I couldn’t stop it.

I tried sudo nginx -s stop, but this doesn’t stop the server, I can still see “Welcome to nginx!” page in my browser on http://localhost/; also I still see master and worker processes of nginx with ps -e | grep nginx.

What is the best way to start/stop nginx on Mac?

BTW, I’ve added “daemon off;” into nginx.conf – as recommended by various resources.

Find below all possible solutions or suggestions for the above questions..

Suggestion: 1
# nginx -h
...
-s signal     : send signal to a master process: stop, quit, reopen, reload
...

Suggestion: 2

This command stops also stops nginx.

sudo nginx -s stop 

Suggestion: 3

The correct way to do this for Nginx installed via MacPorts:

  • Start: sudo port load nginx
  • Stop: sudo port unload nginx

OS X uses launchd so the process of starting/stopping daemons is slightly different.

Suggestion: 4

Look at the PID of master process and do

kill -QUIT <master_pid>

Suggestion: 5

You may try the following:

ps -lef|grep -i nginx:|awk '{ print $2}'|xargs kill -9

Suggestion: 6

Since you installed it following the steps given by macports, I guess you added it to services started at boottime. Have you tried

launchctl unload /Library/LaunchDaemons/org.macports.nginx.plist

to stop the Nginx daemon?

You could also have a try with

sudo port unload nginx