docker上的Nginx默认页面

// 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的上述configuration。 出于某种原因,它一直显示默认的nginx页面。

在容器里面有一个/etc/nginx/nginx.conf文件,其中包含conf.d目录下的所有*.conf文件,但仍然无法让我的conf工作。

然后,我试图复制我的文件到网站 – 可用和网站启用文件夹仍然没有运气。

请帮助谢谢

有三件事情我们需要做的,让nginx启动和运行。

  1. 在构build过程中删除/etc/nginx/conf.d/default.conf
  2. 做一个上游指令来正确引用php-fpm服务。
  3. 修改nginx用户的UID以匹配你的。

最有效的解决scheme是创build一个Dockerfile ,解决所有这三个nginx问题,并将其放入docker-compose.yml的nginx服务定义中。 此configuration有助于更正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