› NGINX
› NGINX Trac
› 3rd Party Modules
› Security Advisories
› CHANGES
› OpenResty
› ngx_lua
› Tengine
在线学习资源
› NGINX 开发从入门到精通
NGINX Modules
› ngx_echo
maxAir
V2EX  ›  NGINX

想在 mac 上配置 nginx 启一个本地服务,访问 localhost ,一直 403 forbidden,心态已崩,求教大神

  •  
  •   maxAir · Jul 8, 2019 · 10062 views
    This topic created in 2676 days ago, the information mentioned may be changed or developed.

    以下是 nginx.conf 文件配置: 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/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;

    54 replies  •  2019-10-10 12:02:46 +08:00
    maxAir
    maxAir
    OP
    Jul 8, 2019❤️1
    1
    window 下没有问题,可以顺利访问,第一次用 mac,死活通不了
    MilkShake
    MilkShake
    Jul 8, 2019
    2
    这个跟目录权限有关系的,你可以把项目路径放在其他目录上,应该就可以了。
    wuchujie
    wuchujie
    Jul 8, 2019
    3
    为什么不加个日志呢。看下什么报错呗
    access_log /Users/xl/xxxxx.access.log
    error_log /Users/xl/xxxx.error.log
    taolu
    taolu
    Jul 8, 2019 via Android
    4
    root 目录下如果不存在 index.html index.htm 文件,也会报 403,最好还是看日志
    maxAir
    maxAir
    OP
    Jul 8, 2019
    5
    @aaa5838769 意思是不能放在 Desktop 里面吗, 我放在 Users/xl/work 这样也是一样的效果, 访问 localhost 就直接 403 了
    maxAir
    maxAir
    OP
    Jul 8, 2019❤️1
    6
    @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 权限的, 不知道为什么了
    ipengxh
    ipengxh
    Jul 8, 2019
    7
    /Users/xl/ 目录的权限呢
    maxAir
    maxAir
    OP
    Jul 8, 2019
    8
    @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 权限的
    misaka19000
    misaka19000
    Jul 8, 2019
    9
    我记得 Mac 上面监听 80 端口是需要 root 权限的
    kidlj
    kidlj
    Jul 8, 2019
    10
    ```
    user root owner;

    user root xl;
    user nobody;
    ```

    到底用的哪个 user ?制定这么多干什么
    yangmiemie
    yangmiemie
    Jul 8, 2019
    11
    用 docker
    maxAir
    maxAir
    OP
    Jul 8, 2019
    12
    @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/*;
    }
    kidlj
    kidlj
    Jul 8, 2019
    13
    ```
    user root owner;
    ```

    user <user_name> <group_name>;

    owner 是什么?

    -------

    建议把 user 这一行注释掉,然后用普通用户(非 sudo )启动试一下。
    wednesdayco
    wednesdayco
    Jul 8, 2019
    14
    跑 docker 完事儿了- -
    lowman
    lowman
    Jul 8, 2019
    15
    403 访问的资源存在权限问题, 检 查一下启动 nginx 的 用户 是否具有对访问资源(包括各级路径)的读写及操作权限
    MilkShake
    MilkShake
    Jul 8, 2019
    16
    @maxAir 这个是权限问题导致的,搜索 “ mac nginx 权限 ”关键字 希望能解决你的问题
    maxAir
    maxAir
    OP
    Jul 8, 2019
    17
    @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
    maxAir
    maxAir
    OP
    Jul 8, 2019
    18
    @aaa5838769 google 百度, 都百度好久了, 被这个问题困扰几天了, 该试都都试了,🤦‍♂️
    maxAir
    maxAir
    OP
    Jul 8, 2019
    19
    @wednesdayco 嗯,🤦‍ 还没填过 docker 的坑, 去了解一下
    xutonglei86
    xutonglei86
    Jul 8, 2019
    20
    目录及目录下的文件,直接给个 777 权限试试
    kidlj
    kidlj
    Jul 8, 2019 via iPhone
    21
    应该是访问的目录设置了额外的权限控制(ls 结果有一个 @)。

    https://apple.stackexchange.com/questions/42177/what-does-signify-in-unix-file-permissions
    maxAir
    maxAir
    OP
    Jul 8, 2019
    22
    @kidlj
    drwxrwxrwx 5 root admin 160 7 8 21:32 Users
    drwxrwxrwx+ 31 xl staff 992 7 8 16:31 xl
    去除了 @ 同样报 403 forbidden 呃。。
    kidlj
    kidlj
    Jul 8, 2019 via iPhone
    23
    @maxAir 看上边的链接,有 + 号也是设置了额外的权限策略,比如 ACL。

    我的 Mac 上也是用 brew 安装和启动的 nginx,配置的目录权限是没有 @ 或者 + 的,访问正常。
    maxAir
    maxAir
    OP
    Jul 8, 2019
    24
    @kidlj
    知道怎么去除这个+ 号吗? , 各种搜没搜到, 只有去除 @ 的, 同样的命令对+ 不管用
    kidlj
    kidlj
    Jul 8, 2019 via iPhone
    25
    @maxAir 太晚了,身边也没有电脑。明天我帮你看下。
    imdong
    imdong
    Jul 8, 2019
    26
    localtion 去掉
    root index 提取出来放上级
    shuangyeying
    shuangyeying
    Jul 9, 2019
    27
    换个端口试试呗,貌似 macOS 的 80-1024 的端口默认都被占用了。
    jorneyr
    jorneyr
    Jul 9, 2019
    28
    在根目录下创建一个文件夹 www,给 /www 权限 777,看看能不能跑起来,能跑起来再去研究权限的问题。
    leopku
    leopku
    Jul 9, 2019 via iPhone
    29
    问就换 caddy
    michealzh
    michealzh
    Jul 9, 2019
    30
    sudo 启动 nginx
    primordial
    primordial
    Jul 9, 2019
    31
    sudu
    primordial
    primordial
    Jul 9, 2019
    32
    maxAir
    maxAir
    OP
    Jul 9, 2019
    33
    @imdong 试过, 和放 location 里面没有区别的
    maxAir
    maxAir
    OP
    Jul 9, 2019
    34
    @jorneyr 不改访问路径,直接访问 nginx 自己的 index.html 是可以访问的,要指向其它目录就会 403, 应该还是权限问题
    zeevin
    zeevin
    Jul 9, 2019
    35
    你要打开 autoindex on; 允许列目录
    doublechenpaul
    doublechenpaul
    Jul 9, 2019
    36
    我也是 macos,10.13.2,sudo nginx 没问题
    qsbaq
    qsbaq
    Jul 9, 2019
    37
    docker +1
    jsjscool
    jsjscool
    Jul 9, 2019
    38
    文件夹权限原因,root 不要指向 Users 目录。新建一个独立的代码目录,比如 /code/www
    kidlj
    kidlj
    Jul 9, 2019
    39
    分别检查一下如下目录的权限:

    ls -led /Users/xl/work/
    ls -led /Users/xl

    然后贴出来。
    maxAir
    maxAir
    OP
    Jul 9, 2019
    40
    @jsjscool 我在根目录下新建 code 文件夹: 权限:drwxrwxrwx 3 root wheel 96 7 9 09:49 code 一样的效果,code 与 Users 平级的
    maxAir
    maxAir
    OP
    Jul 9, 2019
    41
    @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
    66beta
    66beta
    Jul 9, 2019 via Android
    42
    都喊 docker,知道 docker 在 Mac 上多耗内存吗?

    新手建议试试 bitnami nginx 套件
    kidlj
    kidlj
    Jul 9, 2019
    43
    不是权限的问题。

    你的 /Users/xl/work 目录下有 index.html 文件吗?没有创建一个,否则是不能 list index 的。
    mryys
    mryys
    Jul 9, 2019
    44
    LZ MAMP 了解下
    maxAir
    maxAir
    OP
    Jul 9, 2019
    45
    @kidlj
    work 下面是我的项目文件。 入口页是可以访问的, 但是当指向项目里面的其它文件的时候, 部分文件就会报 403, 嗯~~, 直接访问 localhost 报 403 应该是 work 下面没有 index.html , 但是,项目文件不知道为什么报这个
    zlccn
    zlccn
    Jul 9, 2019
    46
    nginx 第一行 修改成 user root; 然后重新 reload 一下
    kidlj
    kidlj
    Jul 9, 2019
    47
    访问项目内其它文件时候,报的错也贴出来 nginx 的 error logs.

    上边只贴了一个访问 / 报 403 的 error logs.
    lancelock
    lancelock
    Jul 9, 2019
    48
    这没必要用 nginx 啊,随便装个 http-server 就行了
    stevenkang
    stevenkang
    Jul 9, 2019
    49
    # 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
    maxAir
    maxAir
    OP
    Jul 10, 2019
    50
    @kidlj 昨天忙,没来得及回。我现在感觉是文件加载的问题:
    http://teststatic.***.com/**/??**/dist/**/**/**.js , 比如我项目中这样的一个链接, 这两个问号如果在链接里面, 如果是 window 环境是可以直接拿到资源的(不要这两个问号也是可以拿到的, 此处我没太明白为什么这样写,不知道是什么规范), 但是如果是在 mac 上, 部分这样的 js 文件就拿不到,报 403,
    kidlj
    kidlj
    Jul 10, 2019
    51
    @maxAir 具体的静态资源(非 index )报错,看 error log。如果找不到资源,就是 404 ;如果打不开文件或者无权进入所在目录,就是 403.
    maxAir
    maxAir
    OP
    Jul 10, 2019
    52
    @lancelock 嗯, 我搞一个试试
    maxAir
    maxAir
    OP
    Jul 10, 2019
    53
    @mryys 好的,thx
    WillisJ
    WillisJ
    Oct 10, 2019
    54
    楼主解决了吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1770 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 93ms · UTC 17:23 · PVG 01:23 · LAX 09:23 · JFK 12:23
    ♥ Do have faith in what you're doing.