我正在努力在docker容器内设置nginx。我基本上有两个容器:
>
一个php: 7-apache容器,用于动态网站,包括其静态内容。
一个nginx容器,其中装载了一个卷作为/home/www data/static content文件夹(我在docker compose.yml中这样做),以尝试为静态网站提供服务(与apache容器提供的服务无关)。
我想用域dynamic.localhost来服务我的动态网站,static.localhost服务我的静态网站只由静态文件组成。
我的nginx容器有以下Dockerfile:
########## BASE #########
FROM nginx:stable
########## CONFIGURATION ##########
ARG DEBIAN_FRONTEND=noninteractive
ENV user www-data
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./site.conf /etc/nginx/conf.d/default.conf
RUN touch /var/run/nginx.pid && \
chown -R ${user}:${user} /var/run/nginx.pid && \
chown -R www-data:www-data /var/cache/nginx
RUN chown -R ${user} /home/${user}/ && \
chgrp -R ${user} /home/${user}/
USER ${user}
如您所见,我正在为nginx使用两个配置文件:nginx。配置和站点。这里是nginx。conf(这并不重要,因为它没有什么特别之处,但如果我做错了什么,请告诉我):
worker_processes auto;
error_log /var/log/nginx/error.log debug;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
这是文件站点。确认我已经在正确书写方面失败了好几天了:
server {
listen 8080;
server_name static.localhost;
root /home/www-data/static-content;
location / {
try_files $uri =404;
}
}
server {
listen 8080;
server_name dynamic.localhost;
location / {
proxy_pass http://dynamic;
proxy_redirect off;
proxy_set_header Host $host:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port 8080;
proxy_set_header X-Forwarded-Host $host:8080;
}
}
(超文本传输协议://动态将请求传递给我命名为“动态”的apache容器)。
所以基本上,我一直在为我试图访问的静态内容目录中的任何文件获得404。例如:
我尝试了各种方法,比如编写try_文件/home/www-data/static-content/$uri,但没有得到任何结果。我阅读了nginx文档的一些部分,并搜索了stackoverflow,但没有找到任何帮助。如果我犯了一个愚蠢的错误,我向你道歉,但我现在唯一关心的是让它发挥作用,并理解我做错了什么。
谢啦
我也遇到了同样的问题,我必须更改用户组对已装入卷文件的权限。
在dockerfile上运行useradd-G root, www.-data-u 1000${user}
并更改了主机文件的权限chmod 775/home/www-data/static-content-R
我通过简单地不使用静态文件的卷,而是在容器中复制它们来解决问题。我怀疑这是由于docker compose装载卷的方式以及nginx进程以非根用户身份运行的权限问题。这不是一个完美的解决方案,因为我必须放弃使用卷,但它可以。
我试着设置nginx来服务我的node.js应用程序静态文件。问题是,当我试图得到我的文件时,我的状态是403禁止的。 当我尝试下载一个文件从 /root/appJs/public/css/style.css我写http://sitename.com/css/style.css我retive 403禁忌状态。我已经在一些论坛上寻找解决方案,但没有
问题内容: Docker菜鸟在这里,尝试使用Compose设置一个简单的Django项目。过,我已经在此方面取得了成功,但是这次我正在尝试一种不同的设置,但我不知道为什么它不起作用。 我有以下docker-compose.yml文件: 我的/ Dockerfile是: 我的/ docker / web / Dockerfile是: 我的/docker/web/default.conf文件是: do
问题内容: 我的要求是,我应该通过一个安静的服务将10MB的zip文件发送给客户端。我在论坛中找到了发送对象是更好的方法的代码,但是如何在以下代码中创建对象: 问题答案: 它是下载文件的更好方法和简便方法。 对于您所要求的代码:
我从Apache切换到Nginx,使用apache,皮肤文件夹中的所有静态文件(图像、css、javascript)都直接由Apache提供服务。 示例: 我读了一些关于Nginx和Plone的文档,但我没有看到。下面是Plone.orgconf的例子:https://github.com/plone/plone-org-nginx/blob/master/nginx.conf 所以,我的问题是:
我对docker比较陌生。我想建立一个postgres数据库,但我想知道如果我重新创建容器,如何确保数据不会丢失。 然后我偶然发现了命名卷(不是绑定卷)以及如何使用它们。但是...在Dockerfile中,您不能使用命名卷。例如data:/var/lib等。正如我使用Dockerfile所理解的那样,它总是一个匿名卷。所以每次我重新创建一个容器时,它都会得到自己的新卷。 所以我的问题来了: 首先:
问题内容: 是否有任何更快的基准测试或比较:将nginx放在node前面,让它直接提供静态文件,还是仅使用node并使用它提供静态文件? nginx解决方案对我来说似乎更易于管理,有什么想法吗? 问题答案: 我必须不同意这里的答案。尽管Node可以正常运行,但是如果配置正确,nginx肯定会更快。遵循类似的模式(仅在需要时返回连接),并且占用内存很少,因此可以在C中高效地实现nginx。而且,它支