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...我能做什么?
你可以像 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 上没有其他进程在运行。
检查防火墙或 iptables。
80 端口可能被阻塞。尝试停止防火墙或 iptables 服务。
如果被阻止,则添加条目以允许端口 80
在您的终端中运行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配置文件中的位置,因此它无法自行停止。