我尝试了许多建议,但无法使其正常工作。
我想创建一个docker-compose.yml
合作NGINX-PHP
的文件。
这就是我所做的:
version: "2"
services:
nginx:
image: nginx:latest
restart: always
ports:
- "80:80"
- "443:443"
links:
- php
depends_on:
- php
expose:
- "80"
- "443"
volumes:
- ./www:/var/www/html
- ./config/nginx/site.conf:/etc/nginx/sites-available/default
- ./config/nginx/site.conf:/etc/nginx/sites-enabled/default
php:
image: php:7-fpm
restart: always
volumes:
- ./www:/var/www/html
Docker
图片无误地运行,但当我想访问Nginx
时,我明白了:
欢迎来到nginx!
如果您看到此页面,则表示已成功安装nginx Web服务器 和工作。需要进一步配置。
有关在线文档和支持,请参阅nginx.org。 nginx.com提供商业支持。
感谢您使用nginx。
我尝试登录两张图片并检查卷。我还检查了是否可以从php
ping nginx
。一切似乎都很好......
这是我的Nginx
网站配置:
server {
server_name ncp-docker;
listen 80;
index index.php index.html index.htm;
root /var/www/html;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /(inc|uploads/avatars) {
deny all;
}
}
答案 0 :(得分:4)
您默认为默认服务器配置,因此您需要覆盖默认的nginx虚拟主机:
- ./config/nginx/site.conf:/etc/nginx/conf.d/default.conf
使用它并删除已启用站点和可用站点的卷
答案 1 :(得分:2)
我认为你可能会错误地接近这个。
nginx配置不应该直接运行PHP。 PHP正在一个单独的容器上运行。
相反,你应该有PHP应用程序的nginx反向代理。
类似的东西:
server {
listen 80;
server_name yourdomain.example.com;
location / {
proxy_pass http://php:9000/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
}
您可能需要添加/更改一些细节......但这是我切割的基本反向代理。在我需要时粘贴,在nginx中
答案 2 :(得分:1)
正如Robert建议您必须覆盖默认的nginx虚拟主机,但我想补充一点,您还可以为您的nginx容器添加额外的Dockerfile并避免使用卷。在docker-compose.yml
中,您必须使用image: nginx:latest
更改build: ./nginx/
。对于Dockerfile,这样的事情可以解决这个问题:
FROM nginx:latest
RUN rm /etc/nginx/conf.d/default.conf
ADD conf.d/ /etc/nginx/conf.d/ #Replace the default nginx virtual host
我发现这更容易,因为稍后您可以轻松地向容器添加更多内容,例如HTTPS连接的SSL证书:
ADD ssl/ /etc/nginx/ssl/
这将为您节省使用卷,并使您的生活更轻松,以便将来的nginx设置。