
以下是 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 MilkShake 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 的 用户 是否具有对访问资源(包括各级路径)的读写及操作权限 |
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 楼主解决了吗 |