Nginx:无法在端口 80 上侦听......只有端口 8080 在 OSX 10.11 上工作

问题描述 投票:0回答:3

OSX 10.11 我安装了最新的 nginx 1.9.9(来自源代码和编译) 配置文件 /usr/local/conf/nginx.conf 语法没问题

监听8080端口没问题我可以请求http://example.local:8080

server {
    listen       8080;
    server_name  example.local;
    root HTML;

然后运行:

 sudo lsof -i -P | grep -i "80"
 nginx     8254           root   10u  IPv4 0x643a3abbad7bf485      0t0     TCP *:8080 (LISTEN)
 nginx     8392           yves   10u  IPv4 0x643a3abbad7bf485      0t0    TCP *:8080 (LISTEN)

但是当我将端口更改为 80 时,我无法访问 http://example.local:80

server {
    listen       80;
    server_name  example.local;
    root html;

sudo nginx -s reload
nginx     8254           root   10u  IPv4 0x643a3abbad7bf485      0t0    TCP *:8080 (LISTEN)
nginx     8254           root   18u  IPv4 0x643a3abbadbb9485      0t0    TCP *:80 (LISTEN)
nginx     8430           yves   10u  IPv4 0x643a3abbad7bf485      0t0    TCP *:8080 (LISTEN)
nginx     8430           yves   18u  IPv4 0x643a3abbadbb9485      0t0    TCP *:80 (LISTEN)

Safari 打不开页面 但是我仍然可以请求http://example.local:8080

很奇怪....Nginx 正在监听 80...我能做什么?

macos nginx
3个回答
15
投票

你可以像 sudo 一样在 1024 以下的端口上运行服务。

在旅途中运行:

$ sudo brew services restart nginx

从系统开始:

$ sudo cp /usr/local/opt/nginx/*.plist /Library/LaunchDaemons
$ sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.nginx.plist

请注意,您必须将服务器设置为侦听配置文件中的 80,并确保端口 80 上没有其他进程在运行。


0
投票

检查防火墙或 iptables。

80 端口可能被阻塞。尝试停止防火墙或 iptables 服务。

如果被阻止,则添加条目以允许端口 80


0
投票

在您的终端中运行top并使用F3搜索NGINX进程。 当您在top列表运行进程中找到时,从正在运行的NGINX进程中复制PID编号。 将 PID 编号粘贴到

/usr/local/nginx/logs/nginx.pid
。 只需将 PID 编号粘贴到
nginx.pid
文件的第一行。 即使在停止 nginx
sudo nginx -s stop
之前已经停止它,然后再次启动它
sudo nginx
.

Nginx 无法停止它的进程,因为它不知道 PID 号,并且正在运行的实例绑定到阻止第二个实例绑定到同一端口的相对端口。

这是在 MacOS Ventura 上进行的全新安装。发生这种情况是因为我在运行时更改了PID文件在NGINX配置文件中的位置,因此它无法自行停止。

© www.soinside.com 2019 - 2024. All rights reserved.