【问题标题】:403 Forbidden - Nginx, Docker & Windows403 禁止 - Nginx、Docker 和 Windows
【发布时间】:2022-04-12 17:38:04
【问题描述】:

我目前正在尝试使用 nginx 使用 docker 设置本地开发机器。我最近从 Virtualbox 支持切换到 Hyper-v,从那以后我在 Nginx 中得到了 403 Forbbiden。

我正在按照本教程进行设置 http://tech.osteel.me/posts/2015/12/18/from-vagrant-to-docker-how-to-use-docker-for-local-web-development.html

我的 Nginx 配置如下

server {
    listen 80 default_server;
    root /var/www/html;
    index index.html index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
        deny all;
    }
}

还有我的 docker-compose

nginx:
    build: ./nginx/
    ports:
        - 80:80
    links:
        - php
    volumes_from:
        - app

php:
    build: ./php/
    expose:
        - 9000
    links:
        - mysql
    volumes_from:
        - app

app:
    image: php:7.0-fpm
    volumes:
        - ~/docker:/var/www/html
        #also tried .:/var/www/html
        #and ./docker:/var/www/html
    command: "true"

mysql:
    image: mysql:latest
    volumes_from:
        - data
    environment:
        MYSQL_ROOT_PASSWORD: secret
        MYSQL_DATABASE: project
        MYSQL_USER: project
        MYSQL_PASSWORD: project

data:
    image: mysql:latest
    volumes:
        - /var/lib/mysql
    command: "true"

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - 8080:80
    links:
        - mysql
    environment:
        PMA_HOST: mysql

Docker 文件夹在我的 C:/User/docker 里面

这里有什么问题? 谢谢

【问题讨论】:

  • 你的 NGINX 日志中有什么?应该有一个特定于进程的错误日志,以及一个写出请求/响应错误的访问日志。 /var/logs/nginx 是日志文件的公共路径。
  • 显然是按照 .conf 文件 access_log off; error_log /var/log/nginx/error.log error; 配置的,但是当我 ssh 到 docker-machine 时,我看到 /var/log 没有 nginx 文件夹...
  • 你是 docker 用户登录的吗?
  • @R0MANARMY 我只是做一个docker-machine ssh。我该如何验证?
  • 我的意思是在 Windows 上,但我不确定卷是否是这里的问题,所以现在可以跳过它。

标签: nginx docker


【解决方案1】:

验证index.htmlindex.php 是否存在于您的C:/User/docker 文件夹中,就好像它们不存在一样,您将看到403 禁止,因为默认情况下您无法浏览该目录。

然后在您的 docker-compose 中尝试以下操作:

volumes:
    - /C/User/docker:/var/www/html

希望对你有帮助。

【讨论】:

    【解决方案2】:

    一个稳定的 dockerfile 和镜像在 Docker 的开源端口上由 WinDocks 提供给 Windows。 WinDocks 在所有版本的 Windows 8、10、Server 2012 和 2016 上运行。1.04 版本包括对 Tomcat、Jetty、Nginx 和 Node.js 的支持。免费社区版是Here

    披露:我是 WinDocks 的联合创始人

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-07
      • 2019-04-17
      • 1970-01-01
      • 2019-05-29
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      相关资源
      最近更新 更多