我需要启动(使用 brew 安装的) nginx 的 80 端口,但是不希望被局域网访问,系统是 macOS Monterey 12.4
这种配置可以启动
server {
listen 0.0.0.0:80;
...
}
这种配置就不行
server {
listen 127.0.0.1:80;
...
}
报错内容
bind() to 127.0.0.1:80 failed (13: Permission denied)
1
lscho 2022-06-29 10:38:42 +08:00
Permission denied 是权限不够,把 nginx 的用户加一下 root 权限,或者把 nginx 的用户改为自己,然后 sudo 启动试试
|
2
xtinput 2022-06-29 10:42:18 +08:00
上虚拟机呀
|
3
xtinput 2022-06-29 10:43:19 +08:00
直接在主机上部署服务器环境不好,可能会出现端口冲突
|
4
xtinput 2022-06-29 10:48:41 +08:00
https://github.com/gyf304/vmcli 直接用系统的虚拟机框架,没 GUI 的
|
5
PerFectTime 2022-06-29 10:54:21 +08:00
sudo nginx
|
7
scp173 OP |
8
mww 2022-06-29 11:37:06 +08:00
好像低于 1024 端口就需要 root 权限,最简单的方法就是端口转发
|
10
lululau 2022-06-29 11:46:59 +08:00
把 1024 以下端口规定为受限端口其实是一个糟糕的设计,macOS 10.13 之后就没有受限端口这个机制了,只不过它的实现看起来有 bug ,这就是为什么绑到某个具体接口的时候仍然报 Perm denied:
https://news.ycombinator.com/item?id=18302380 brew 安装的服务可以用 brew services 启动: 1. 以当前用户启动:brew services start nginx |
11
lululau 2022-06-29 11:47:36 +08:00
2. 以 root 用户启动,并设置为开机自启动:sudo brew services start nginx
|
12
lululau 2022-06-29 11:56:53 +08:00
用 Alfred 的,也可以用我弄的这个 workflow: https://github.com/lululau/homebrew-services-alfred-workflow
|
14
CEBBCAT 2022-06-29 12:26:37 +08:00
提问之前别忘了搜索
https://stackoverflow.com/a/44032912 |
16
scp173 OP 哎,目前的做法是绑定了所有网卡的 80 端口,在 [系统偏好设置] - [安全性与隐私] - [防火墙] [防火墙选项] 里禁用 nginx 的外部网络连接,以此达到使用 80 端口且防止局域网访问
|