以下是 nginx.conf 文件配置: user root owner;
worker_processes 1;
#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;
#pid logs/nginx.pid;
events { worker_connections 1024; }
http { include mime.types; default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream node_server{
server 127.0.0.1:3000;
keepalive 2000;
}
server {
listen 80;
server_name localhost;
location / {
root /Users/xl/Desktop/work/;
index index.html index.htm;
# add_header Access-Control-Allow-Origin *;
# add_header Cache-Control max-age=3600;
# concat on;
# concat_max_files 100;
# concat_types "application/javascript" "text/css" "text/html";
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
include servers/*;
}
已经检查本地项目目录下所以文件和文件夹都有 rwx 权限; 项目路径在: /Users/xl/Desktop/work;
1
maxAir OP window 下没有问题,可以顺利访问,第一次用 mac,死活通不了
|
2
aaa5838769 2019-07-08 16:23:08 +08:00
这个跟目录权限有关系的,你可以把项目路径放在其他目录上,应该就可以了。
|
3
wuchujie 2019-07-08 16:29:28 +08:00
为什么不加个日志呢。看下什么报错呗
access_log /Users/xl/xxxxx.access.log error_log /Users/xl/xxxx.error.log |
4
taolu 2019-07-08 16:39:41 +08:00 via Android
root 目录下如果不存在 index.html index.htm 文件,也会报 403,最好还是看日志
|
5
maxAir OP @aaa5838769 意思是不能放在 Desktop 里面吗, 我放在 Users/xl/work 这样也是一样的效果, 访问 localhost 就直接 403 了
|
6
maxAir OP @wuchujie , var 目录下有日志:2019/07/08 16:40:43 [error] 5896#0: *1 directory index of "/Users/xl/work/" is forbidden, client: 127.0.0.1, server: localhost, request: "GET / HTTP/1.1", host: "localhost", 但是我查看 xl/work 目录是有 rwx 权限的, 不知道为什么了
|
7
ipengxh 2019-07-08 17:08:44 +08:00
/Users/xl/ 目录的权限呢
|
8
maxAir OP @ipengxh
/Users/xl:drwxr-xr-x@ 31 xl staff 992 7 8 16:31 xl /Users:drwxr-xr-x 5 root admin 160 4 13 21:21 Users 也是有 rwx 权限的 |
9
misaka19000 2019-07-08 17:16:00 +08:00
我记得 Mac 上面监听 80 端口是需要 root 权限的
|
10
kidlj 2019-07-08 17:27:42 +08:00
```
user root owner; user root xl; user nobody; ``` 到底用的哪个 user ?制定这么多干什么 |
11
yangmiemie 2019-07-08 17:28:22 +08:00
用 docker
|
12
maxAir OP @kidlj 其实只有第一个打开的哈, 我把代码贴上来, 不知道咋把前面的 注释 “#” 给弄没了, 而且字号还变大了, 我再贴一遍试试。
user root owner; # user root xl; # user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream node_server{ server 127.0.0.1:3000; keepalive 2000; } server { listen 80; server_name localhost; location / { root /Users/xl/work/; index index.html index.htm; # add_header Access-Control-Allow-Origin *; # add_header Cache-Control max-age=3600; # concat on; # concat_max_files 100; # concat_types "application/javascript" "text/css" "text/html"; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } include servers/*; } |
13
kidlj 2019-07-08 17:46:44 +08:00
```
user root owner; ``` user <user_name> <group_name>; owner 是什么? ------- 建议把 user 这一行注释掉,然后用普通用户(非 sudo )启动试一下。 |
14
wednesdayco 2019-07-08 17:53:57 +08:00
跑 docker 完事儿了- -
|
15
lowman 2019-07-08 17:57:07 +08:00
403 访问的资源存在权限问题, 检 查一下启动 nginx 的 用户 是否具有对访问资源(包括各级路径)的读写及操作权限
|
16
aaa5838769 2019-07-08 17:58:43 +08:00
@maxAir 这个是权限问题导致的,搜索 “ mac nginx 权限 ”关键字 希望能解决你的问题
|
17
maxAir OP @kidlj
1. 注释掉 user root owner, 2. 执行 brew services start nginx, 提示:XLdeMacBook-Pro:~ xl$ brew services start nginx ==> Successfully started `nginx` (label: homebrew.mxcl.nginx), 启动后, 还是不行,同样报 403 |
18
maxAir OP @aaa5838769 google 百度, 都百度好久了, 被这个问题困扰几天了, 该试都都试了,🤦♂️
|
19
maxAir OP @wednesdayco 嗯,🤦 还没填过 docker 的坑, 去了解一下
|
20
xutonglei86 2019-07-08 18:14:24 +08:00
目录及目录下的文件,直接给个 777 权限试试
|
21
kidlj 2019-07-08 18:45:51 +08:00 via iPhone
应该是访问的目录设置了额外的权限控制(ls 结果有一个 @)。
https://apple.stackexchange.com/questions/42177/what-does-signify-in-unix-file-permissions |
22
maxAir OP @kidlj
drwxrwxrwx 5 root admin 160 7 8 21:32 Users drwxrwxrwx+ 31 xl staff 992 7 8 16:31 xl 去除了 @ 同样报 403 forbidden 呃。。 |
23
kidlj 2019-07-08 22:25:05 +08:00 via iPhone
|
26
imdong 2019-07-08 23:03:03 +08:00
localtion 去掉
root index 提取出来放上级 |
27
shuangyeying 2019-07-09 06:46:19 +08:00
换个端口试试呗,貌似 macOS 的 80-1024 的端口默认都被占用了。
|
28
jorneyr 2019-07-09 07:25:25 +08:00
在根目录下创建一个文件夹 www,给 /www 权限 777,看看能不能跑起来,能跑起来再去研究权限的问题。
|
29
leopku 2019-07-09 07:40:18 +08:00 via iPhone
问就换 caddy
|
30
michealzh 2019-07-09 09:04:40 +08:00
sudo 启动 nginx
|
31
primordial 2019-07-09 09:10:24 +08:00
sudu
|
32
primordial 2019-07-09 09:10:42 +08:00
@primordial sudo
|
34
maxAir OP @jorneyr 不改访问路径,直接访问 nginx 自己的 index.html 是可以访问的,要指向其它目录就会 403, 应该还是权限问题
|
35
zeevin 2019-07-09 09:32:52 +08:00
你要打开 autoindex on; 允许列目录
|
36
doublechenpaul 2019-07-09 09:33:23 +08:00
我也是 macos,10.13.2,sudo nginx 没问题
|
37
qsbaq 2019-07-09 09:39:04 +08:00
docker +1
|
38
jsjscool 2019-07-09 09:40:01 +08:00
文件夹权限原因,root 不要指向 Users 目录。新建一个独立的代码目录,比如 /code/www
|
39
kidlj 2019-07-09 09:45:59 +08:00
分别检查一下如下目录的权限:
ls -led /Users/xl/work/ ls -led /Users/xl 然后贴出来。 |
40
maxAir OP @jsjscool 我在根目录下新建 code 文件夹: 权限:drwxrwxrwx 3 root wheel 96 7 9 09:49 code 一样的效果,code 与 Users 平级的
|
41
maxAir OP @kidlj
XLdeMacBook-Pro:/ xl$ ls -led /Users/xl/work drwxrwxrwx 4 xl staff 128 7 9 10:02 /Users/xl/work XLdeMacBook-Pro:/ xl$ ls -led /Users/xl drwxrwxrwx+ 31 xl staff 992 7 8 16:31 /Users/xl 0: group:everyone deny delete |
42
66beta 2019-07-09 10:07:34 +08:00 via Android
都喊 docker,知道 docker 在 Mac 上多耗内存吗?
新手建议试试 bitnami nginx 套件 |
43
kidlj 2019-07-09 10:21:12 +08:00
不是权限的问题。
你的 /Users/xl/work 目录下有 index.html 文件吗?没有创建一个,否则是不能 list index 的。 |
44
mryys 2019-07-09 10:41:49 +08:00
LZ MAMP 了解下
|
45
maxAir OP @kidlj
work 下面是我的项目文件。 入口页是可以访问的, 但是当指向项目里面的其它文件的时候, 部分文件就会报 403, 嗯~~, 直接访问 localhost 报 403 应该是 work 下面没有 index.html , 但是,项目文件不知道为什么报这个 |
46
zlccn 2019-07-09 10:56:01 +08:00
nginx 第一行 修改成 user root; 然后重新 reload 一下
|
47
kidlj 2019-07-09 10:57:35 +08:00
访问项目内其它文件时候,报的错也贴出来 nginx 的 error logs.
上边只贴了一个访问 / 报 403 的 error logs. |
48
lancelock 2019-07-09 11:23:12 +08:00
这没必要用 nginx 啊,随便装个 http-server 就行了
|
49
stevenkang 2019-07-09 11:29:46 +08:00
# Nginx 容器化运行
> docker run --name nginx -v /etc/nginx.conf:/etc/nginx/nginx.conf:ro -v /etc/nginx:/v-nginx -p 192.168.1.100:80:80 -p 192.168.1.100:443:443 --rm -d nginx |
50
maxAir OP @kidlj 昨天忙,没来得及回。我现在感觉是文件加载的问题:
http://teststatic.***.com/**/??**/dist/**/**/**.js , 比如我项目中这样的一个链接, 这两个问号如果在链接里面, 如果是 window 环境是可以直接拿到资源的(不要这两个问号也是可以拿到的, 此处我没太明白为什么这样写,不知道是什么规范), 但是如果是在 mac 上, 部分这样的 js 文件就拿不到,报 403, |
51
kidlj 2019-07-10 13:54:53 +08:00
@maxAir 具体的静态资源(非 index )报错,看 error log。如果找不到资源,就是 404 ;如果打不开文件或者无权进入所在目录,就是 403.
|
54
WillisJ 2019-10-10 12:02:46 +08:00
楼主解决了吗
|