以下是 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;
|      1maxAir OP  1 window 下没有问题,可以顺利访问,第一次用 mac,死活通不了 | 
|  |      2aaa5838769      2019-07-08 16:23:08 +08:00 这个跟目录权限有关系的,你可以把项目路径放在其他目录上,应该就可以了。 | 
|      3wuchujie      2019-07-08 16:29:28 +08:00 为什么不加个日志呢。看下什么报错呗 access_log /Users/xl/xxxxx.access.log error_log /Users/xl/xxxx.error.log | 
|      4taolu      2019-07-08 16:39:41 +08:00 via Android root 目录下如果不存在 index.html index.htm 文件,也会报 403,最好还是看日志 | 
|      5maxAir OP @aaa5838769 意思是不能放在 Desktop 里面吗, 我放在 Users/xl/work   这样也是一样的效果, 访问 localhost 就直接 403 了 | 
|      6maxAir OP  1 @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 权限的, 不知道为什么了 | 
|      7ipengxh      2019-07-08 17:08:44 +08:00 /Users/xl/ 目录的权限呢 | 
|      8maxAir 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 权限的 | 
|  |      9misaka19000      2019-07-08 17:16:00 +08:00 我记得 Mac 上面监听 80 端口是需要 root 权限的 | 
|  |      10kidlj      2019-07-08 17:27:42 +08:00 ``` user root owner; user root xl; user nobody; ``` 到底用的哪个 user ?制定这么多干什么 | 
|      11yangmiemie      2019-07-08 17:28:22 +08:00 用 docker | 
|      12maxAir 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/*; } | 
|  |      13kidlj      2019-07-08 17:46:44 +08:00 ``` user root owner; ``` user <user_name> <group_name>; owner 是什么? ------- 建议把 user 这一行注释掉,然后用普通用户(非 sudo )启动试一下。 | 
|      14wednesdayco      2019-07-08 17:53:57 +08:00 跑 docker 完事儿了- - | 
|  |      15lowman      2019-07-08 17:57:07 +08:00 403 访问的资源存在权限问题, 检 查一下启动 nginx 的 用户 是否具有对访问资源(包括各级路径)的读写及操作权限 | 
|  |      16aaa5838769      2019-07-08 17:58:43 +08:00 @maxAir 这个是权限问题导致的,搜索 “ mac nginx 权限 ”关键字 希望能解决你的问题 | 
|      17maxAir 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 | 
|      18maxAir OP @aaa5838769 google 百度, 都百度好久了, 被这个问题困扰几天了, 该试都都试了,🤦♂️ | 
|      19maxAir OP @wednesdayco  嗯,🤦 还没填过 docker 的坑, 去了解一下 | 
|      20xutonglei86      2019-07-08 18:14:24 +08:00 目录及目录下的文件,直接给个 777 权限试试 | 
|  |      21kidlj      2019-07-08 18:45:51 +08:00 via iPhone 应该是访问的目录设置了额外的权限控制(ls 结果有一个 @)。 https://apple.stackexchange.com/questions/42177/what-does-signify-in-unix-file-permissions | 
|      22maxAir OP @kidlj  drwxrwxrwx 5 root admin 160 7 8 21:32 Users drwxrwxrwx+ 31 xl staff 992 7 8 16:31 xl 去除了 @ 同样报 403 forbidden 呃。。 | 
|  |      23kidlj      2019-07-08 22:25:05 +08:00 via iPhone | 
|  |      26imdong      2019-07-08 23:03:03 +08:00 localtion 去掉 root index 提取出来放上级 | 
|      27shuangyeying      2019-07-09 06:46:19 +08:00 换个端口试试呗,貌似 macOS 的 80-1024 的端口默认都被占用了。 | 
|      28jorneyr      2019-07-09 07:25:25 +08:00 在根目录下创建一个文件夹 www,给 /www 权限 777,看看能不能跑起来,能跑起来再去研究权限的问题。 | 
|  |      29leopku      2019-07-09 07:40:18 +08:00 via iPhone 问就换 caddy | 
|      30michealzh      2019-07-09 09:04:40 +08:00 sudo 启动 nginx | 
|  |      31primordial      2019-07-09 09:10:24 +08:00 sudu | 
|  |      32primordial      2019-07-09 09:10:42 +08:00 @primordial  sudo | 
|      34maxAir OP @jorneyr 不改访问路径,直接访问 nginx 自己的 index.html 是可以访问的,要指向其它目录就会 403, 应该还是权限问题 | 
|      35zeevin      2019-07-09 09:32:52 +08:00 你要打开 autoindex on; 允许列目录 | 
|      36doublechenpaul      2019-07-09 09:33:23 +08:00 我也是 macos,10.13.2,sudo nginx 没问题 | 
|      37qsbaq      2019-07-09 09:39:04 +08:00 docker +1 | 
|  |      38jsjscool      2019-07-09 09:40:01 +08:00 文件夹权限原因,root 不要指向 Users 目录。新建一个独立的代码目录,比如 /code/www | 
|  |      39kidlj      2019-07-09 09:45:59 +08:00 分别检查一下如下目录的权限: ls -led /Users/xl/work/ ls -led /Users/xl 然后贴出来。 | 
|      40maxAir OP @jsjscool  我在根目录下新建 code 文件夹: 权限:drwxrwxrwx 3 root wheel 96 7 9 09:49 code   一样的效果,code 与 Users 平级的 | 
|      41maxAir 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 | 
|  |      4266beta      2019-07-09 10:07:34 +08:00 via Android 都喊 docker,知道 docker 在 Mac 上多耗内存吗? 新手建议试试 bitnami nginx 套件 | 
|  |      43kidlj      2019-07-09 10:21:12 +08:00 不是权限的问题。 你的 /Users/xl/work 目录下有 index.html 文件吗?没有创建一个,否则是不能 list index 的。 | 
|  |      44mryys      2019-07-09 10:41:49 +08:00 LZ MAMP 了解下 | 
|      45maxAir OP @kidlj  work 下面是我的项目文件。 入口页是可以访问的, 但是当指向项目里面的其它文件的时候, 部分文件就会报 403, 嗯~~, 直接访问 localhost 报 403 应该是 work 下面没有 index.html , 但是,项目文件不知道为什么报这个 | 
|  |      46zlccn      2019-07-09 10:56:01 +08:00 nginx 第一行 修改成 user root; 然后重新 reload 一下 | 
|  |      47kidlj      2019-07-09 10:57:35 +08:00 访问项目内其它文件时候,报的错也贴出来 nginx 的 error logs.  上边只贴了一个访问 / 报 403 的 error logs. | 
|  |      48lancelock      2019-07-09 11:23:12 +08:00 这没必要用 nginx 啊,随便装个 http-server 就行了 | 
|  |      49stevenkang      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 | 
|      50maxAir OP @kidlj  昨天忙,没来得及回。我现在感觉是文件加载的问题: http://teststatic.***.com/**/??**/dist/**/**/**.js , 比如我项目中这样的一个链接, 这两个问号如果在链接里面, 如果是 window 环境是可以直接拿到资源的(不要这两个问号也是可以拿到的, 此处我没太明白为什么这样写,不知道是什么规范), 但是如果是在 mac 上, 部分这样的 js 文件就拿不到,报 403, | 
|  |      51kidlj      2019-07-10 13:54:53 +08:00 @maxAir 具体的静态资源(非 index )报错,看 error log。如果找不到资源,就是 404 ;如果打不开文件或者无权进入所在目录,就是 403. | 
|      54WillisJ      2019-10-10 12:02:46 +08:00 楼主解决了吗 |