
Я только что настроил Homebrew Nginx на Mac OS X 10.11 (El Capitan).
Если я настрою конфигурацию Ngnix следующим образом:
listen 127.0.0.1:8080;
listen 127.0.0.1:81;
listen 127.0.0.1:75;
Это сработает. Но если я вставлю туда это:
listen 127.0.0.1:80;
Это не так. Мне откажут в подключении, если я пойдуhttp://127.0.0.1
ps
говорит, что Nginx запущен, но netstat -a | grep nginx
или netstat -a | grep 80
говорит, что это не так.
Конечно, запускать это как root (не то чтобы это было нужно для запуска на:8080
И брандмауэр Mac OS X не запущен.
Журнал ошибок больше не отображает следующее:
2015/10/10 17:16:19 [emerg] 23906#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
Есть идеи? Я МОГУ работать с этим, запущенным на 8080
(любопытно, что когда я запускаю на 8080
, он открывает 80
порт и перенаправляет его на 80
).
решение1
Перезагрузил OSX. Заработало. Думаю, с linux было бы по-другому.
решение2
Ошибка следующая:
2015/10/10 17:16:19 [emerg] 23906#0: bind() to 0.0.0.0:80 failed (48: Address already in use)
Этот «Адрес уже используется» говорит сам за себя: что-то еще в вашей системе использует порт 80. У вас включен общий доступ к веб-сайту или, может быть, установлен и запущен Apache? Вы можете проверить это, запустив lsof
в своей системе следующее:
sudo lsof -i -P | grep -i "80"
Это четко покажет вам, какой процесс может использовать порт 80. Если вам интересно узнать, какие еще порты настроены на «прослушивание» в вашей системе Mac OS X, просто выполните эту команду:
sudo lsof -i -P
А если вы просто хотите проверить, используется ли порт 80, вы можете использовать эту вариацию команды, lsof
которая позволяет проверять эти данные без фильтрации вывода grep
:
sudo lsof -nPL -iTCP:80
решение3
В системах на базе Unix, таких как MacOS, вы просто не сможете запускать службы на портах ниже 1024 без привилегий суперпользователя. Но когда вы перезагружаете компьютер, служба nginx автоматически перезапускается с суперпользователем, поэтому она работает.
Следующая команда должна решить проблему:
sudo brew services restart nginx
решение4
Я решил эту проблему (у меня MacBook Air с чипом M1):
- Удалить httpd (если есть)
- Отключить апачсвязь
- Установить nginx
- Измените порт на 80 с
/usr/local/etc/nginx/nginx.conf