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

eblbsuwk  于 2023-03-29  发布在  Nginx
关注(0)|答案(3)|浏览(225)

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...我能做什么?

2ekbmq32

2ekbmq321#

您可以在1024以下的端口上运行服务,如sudo。
在旅途中奔跑:

$ 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上运行。

wooyq4lh

wooyq4lh2#

检查firwall或iptables。
端口80可能被阻止。请尝试停止防火墙或iptables服务。
如果它被阻塞,则添加允许端口80的条目

8nuwlpux

8nuwlpux3#

在终端中运行top,F3搜索NGINX进程,在top列表中找到正在运行的NGINX进程,复制PID号,粘贴到/usr/local/nginx/logs/nginx.pid中,只需要在nginx.pid文件的第一行粘贴PID号即可。即使已经停止之前停止nginx sudo nginx -s stop,然后再次启动sudo nginx
Nginx无法停止进程,因为它不知道PID号,并且正在运行的示例绑定到相对端口,阻止第二个示例绑定到同一端口。
这是在MacOS Ventura上,一个全新的安装。它发生的原因是我在运行时更改了NGINX配置文件中PID文件的位置,因此它无法自行停止。

相关问题