gpt4 book ai didi

php - Docker上的Nginx默认页面

转载 作者:行者123 更新时间:2023-12-02 21:23:16 29 4
gpt4 key购买 nike

// docker-compose.yml

web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./code:/code
# - ./site/site.conf:/etc/nginx/conf.d/site.conf
- ./site/site.conf:/etc/nginx/sites-available/site.conf
- ./site/site.conf:/etc/nginx/sites-enabled/site.conf
links:
- php
php:
build: ./php
volumes:
- ./code:/code

// site/site.conf

server {
index index.php index.html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /code;

location ~ \.php$ {
try_files $uri =404;
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 PATH_INFO $fastcgi_path_info;
}
}

我在docker中运行的nginx具有以上配置。由于某些原因,它会继续显示默认的nginx页面。

容器内有一个 /etc/nginx/nginx.conf文件,其中包含 *.conf目录中的所有 conf.d,但仍无法使我的conf工作。

然后,我尝试将文件复制到站点可用文件夹和启用站点的文件夹中,但仍然没有运气。

请帮助
谢谢

最佳答案

要使Nginx正常运行,我们需要做三件事。

  • 在构建过程中删除 /etc/nginx/conf.d/default.conf
  • 制作一个上游指令,以正确引用php-fpm服务。
  • 更改nginx用户的 UID 以匹配您的用户。

  • 最有效的解决方案是创建一个解决所有这三个nginx问题的 Dockerfile ,并将其放入 docker-compose.yml 的nginx服务定义中。此配置有助于更正Nginx用户并包括 sites-enabled/.conf
    # /etc/nginx/nginx.conf: Changes user to www-data and includes /etc/nginx/sites-enabled/*.conf
    user www-data;
    worker_processes 4;
    pid /run/nginx.pid;

    events {
    worker_connections 2048;
    multi_accept on;
    use epoll;
    }

    http {
    server_tokens off;
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 15;
    types_hash_max_size 2048;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    access_log off;
    error_log off;
    gzip on;
    gzip_disable "msie6";
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-available/*;
    open_file_cache max=100;
    }

    daemon off;

    先前的 nginx.conf 和此 Dockerfile 都应存储在同一目录中。
    # <your-nginx-build-context>/Dockerfile
    FROM nginx:latest

    # The default nginx.conf DOES NOT include /etc/nginx/sites-enabled/*.conf
    COPY nginx.conf /etc/nginx/
    COPY symfony.conf /etc/nginx/sites-available/

    # Solves 1
    RUN mkdir -p /etc/nginx/sites-enabled/ \
    && ln -s /etc/nginx/sites-available/symfony.conf /etc/nginx/sites-enabled/symfony.conf \
    && rm /etc/nginx/conf.d/default.conf

    # Solves 2
    RUN echo "upstream php-upstream { server php:9000; }" > /etc/nginx/conf.d/upstream.conf

    # Solves 3
    RUN usermod -u 1000 www-data

    CMD ["nginx"]

    EXPOSE 80
    EXPOSE 443

    确保使用以下内容更新 docker-compose.yml 中的nginx服务定义:
    web:
    build: ./nginx/Dockerfile

    关于php - Docker上的Nginx默认页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008292/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com