使用nginx的Docker compose一直显示欢迎使用nginx

qq24tv8q  于 2022-11-21  发布在  Nginx
关注(0)|答案(1)|浏览(201)

我尝试使用docker-compose和nginx来建立一个wordpress环境,问题是我不能让nginx使用wordpress index.php,即使我覆盖了默认的.conf并将我的wordpress文件结构挂载到/var/www/html。
下面是yml文件的相关部分:

version: '3'

networks:
  wordpress:

services:
  site:
    platform: linux/arm64/v8
    build:
      context: .
      dockerfile: nginx.dockerfile
    container_name: nginx
    ports:
      - 8080:80
      - 8443:443
    volumes:
      - ./wordpress:/var/www/html:delegated
    depends_on:
      - php
      - mysql
    networks:
      - wordpress

这里我将wordpress文件夹挂载到我用nginx.dockerfile创建的/var/www/html文件夹中:

FROM nginx:stable-alpine

ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf

RUN mkdir -p /var/www/html

下面是我的默认.conf文件:

upstream php {
    server unix:/tmp/php-cgi.socket;
    server php:9000;
}

server {
    listen 8080;
    listen [::]:8080;
    server_name localhost;

    root /var/www/html;

    index index.php;

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

    location ~ \.php$ {
        include fastcgi.conf;
        fastcgi_intercept_errors on;
        fastcgi_pass php;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

server {
    listen 8443;
    listen [::]:8443;
    server_name localhost;

    root /var/www/html;

    index index.php;

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

    location ~ \.php$ {
        include fastcgi.conf;
        fastcgi_intercept_errors on;
        fastcgi_pass php;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires max;
        log_not_found off;
    }
}

我测试的内容:

Someone on stackoverflow也有同样的问题,答案似乎很清楚,但不幸的是它不起作用。
当运行docker-compose run --rm site cat /etc/nginx/conf.d/default.conf时,它会打印出我的默认.conf文件,并且我还确认我的WordPress结构与index.php在文件夹/var/www/html中。
我还测试了重命名配置文件,删除docker该高速缓存并从头开始重建所有内容,但nginx并不在意,而是加载它自己的配置文件。
Some people on Github建议将php容器名称改为类似php-box 1的名称以避免混淆,但这也没有帮助。
谢谢你的帮助。

mqkwyuun

mqkwyuun1#

所以我想明白了。首先,如果欢迎消息仍然显示是因为浏览器的缓存。清除该高速缓存后,我得到了一个ERR_EMPTY_RESPONSE。问题是在docker-compose.yml文件中,为了将8080端口绑定到80,我写了8080:80而不是80:8080。我希望它能帮助那里的人。

相关问题