Windows版Docker。无法连接到Nginx

使用Windows 10和Docker,我试图到达运行nginx的Linux容器。我试图通过网络浏览器访问本地主机(或通过IP地址),但显示“无法访问此页面”。如果我尝试在nginx容器中访问localhost或使用CURL直接ip,则会收到“拒绝连接”的信息。我是使用Windows的Docker的完全入门者,要解决它的噩梦!尝试过localhost:8080172.18.0.4:8080(这是docker inspect nginx_1中显示的IP)

这是我的docker-compose.yml

version: '2'

volumes:
    database_data:
        driver: local

services:
    nginx:
        image: nginx:latest
        ports:
            - 8080:80
        volumes:
            - ./docker/nginx/default.conf:/etc/nginx/conf.d
        volumes_from: 
            - php
    php:
        build: ./docker/php
        expose: 
            - 9000
        volumes:
            - .:/var/www/html
    mysql:
        image: mysql:latest
        expose: 
            - 3306
        volumes:
            - database_data:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: secret
            MYSQL_DATABASE: project
            MYSQL_USER: project
            MYSQL_PASSWORD: project

这是我的Nginx default.conf文件:

server {
    listen 80 default_server;
    root /var/www/html/public;
    index index.php;
    charset utf-8;
    location / {

        try_files $uri $uri/ /index.php;

    }

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

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    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_param APPLICATION_ENV development;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

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

我的配置中缺少什么阻止我从主机访问index.php文件?

非常感谢!

heyan602 回答:Windows版Docker。无法连接到Nginx

仅测试了您的设置,对我来说效果很好。

由于您已经从浏览器获取“无法访问此页面”,因此问题出在nginx中,而不是php容器中。当php容器无法正常工作时,页面将加载并显示nginx错误,例如“找不到文件”(例如index.php)或类似错误。

您可以检查nginx配置是否正确加载到容器中吗?为此,请键入“ docker exec -it sh”并导航到/etc/nginx/conf.d/default.conf文件

其他信息

您无法通过172.18.0.4:8080访问nginx容器。这是容器的ip,但是您仅将端口8080映射到您的主机。 nginx容器的默认端口为80。由于“常规”容器端口仅在docker网络内部可用,因此您无法通过这种方式访问​​该容器。

本文链接:https://www.f2er.com/2503841.html

大家都在问